React Redux的reducer函数中如何执行多项赋值与新增操作?
Redux reducer多字段状态更新实现方案
你写的期望写法本身就是符合Redux不可变更新规范的正确实现,直接替换原有case逻辑即可正常生效。
写法合法性说明
Redux reducer要求所有状态更新都必须生成新的状态对象,不能直接修改原state,你的写法完全符合要求:
- 首先通过
...state展开原有状态,保留所有不需要修改的字段 - 对数组类型的
clientList,通过展开原数组+追加新元素的方式生成全新数组,没有修改原数组 - 直接给三个需要重置的字段赋值对应初始值,优先级高于
...state展开的旧值,会正确覆盖原有状态
注意事项
如果你的clientName、clientStatus、clientAccessGrants三个字段不是根级state字段,而是嵌套在某个子对象下,需要逐层展开对应父级对象再修改,举个例子如果三个字段都在submitForm子对象下,写法如下:
case Actions.ON_SUBMIT_CLIENT: { return { ...state, clientList: [...state.clientList, action.client], submitForm: { ...state.submitForm, clientName: "", clientStatus: "", clientAccessGrants: [] } } }
你可以接入Redux DevTools,触发对应提交动作后直接查看状态变更结果,验证逻辑是否符合预期。
内容的提问来源于stack exchange,提问作者rudeTool
相关产品推荐
相关产品推荐

