React Redux中如何向state的现有数组添加新数值?
实现方案
你当前使用的是Redux Toolkit的createReducer API,内部默认集成了Immer库,支持直接修改状态的写法,会自动转换成符合Immutable规范的更新,可选两种实现方式:
- 方案1:直接修改状态(推荐写法,代码更简洁)
在UPDATE_ARRAY对应的回调中直接调用数组的push方法即可:
const userRuducer = createReducer(initialState,(builder)=>{ builder.addCase('UPDATE_ARRAY',(state,action)=>{ state.arrNames.push(action.payload) }) })
- 方案2:返回全新状态对象(兼容传统Redux的不可变更新写法)
手动展开原有数组拼接新值,返回完整的新state对象:
const userRuducer = createReducer(initialState,(builder)=>{ builder.addCase('UPDATE_ARRAY',(state,action)=>{ return { ...state, arrNames: [...state.arrNames, action.payload] } }) })
补充注意:你当前代码中的reducer命名存在拼写错误,
userRuducer建议修正为userReducer,避免后续调用时报错。
内容的提问来源于stack exchange,提问作者asif kaif
相关产品推荐
相关产品推荐

