这个问题通常是由于 payload 存储了引用类型数据(例如对象或数组),并且在 dispatch 后更改了它们的值,导致实现期间出现了不一致的问题。解决方法是使用深拷贝来复制 payload,而不是直接引用它。
以下是通过使用 lodash 的深拷贝函数 _.cloneDeep() 来解决此问题的示例:
// 在 component 中 dispatch action this.store.dispatch(new MyAction(_.cloneDeep(myPayload)));
// 在 reducer 中获取 action payload export function myReducer(state: MyState, action: MyAction) { const payload = action.payload;
// 在此处使用 payload }
在 dispatch 动作时,使用 _.cloneDeep() 创建 payload 的深拷贝,以避免传递的引用类型数据在 dispatch 和 implement 期间被更改。这样在 reducer 中获取时,就能够确保 payload 的一致性。