如何在Redux Toolkit中向空数组状态追加对象
Redux Toolkit 向数组追加对象的正确实现
你当前编写的扩展运算符覆盖数组的写法本身是符合Redux Toolkit语法规则的,RTK底层基于Immer实现,支持「返回全新状态」和「直接修改代理状态」两种更新模式。
如果你的代码运行报错,大概率是触发了Immer的使用限制,或者是dispatch、切片注册的环节有问题。
更符合RTK开发习惯的简洁写法如下,直接调用数组的push方法即可:
getCurrentTime: (state, action) => { // 直接对Immer代理的数组调用push方法,会自动生成不可变更新 state.currentTimeOfServices.push({ startTime: action.payload.startTime, name: action.payload.name }) }
注意:同一个reducer函数中不允许同时修改状态、又返回新状态,两种写法只能选择其一,否则会直接抛出异常。
如果需要验证逻辑是否正常,可以在reducer内打印action.payload确认参数传递是否正确,打印state.currentTimeOfServices确认数组更新结果。
内容的提问来源于stack exchange,提问作者Akii J
相关产品推荐
相关产品推荐

