【发布时间】:2017-10-04 18:06:04
【问题描述】:
我一直在追踪一个问题,即 redux 存储正确更新,但组件未反映更改。我尝试了多种方法来确保我没有改变状态,但是问题仍然存在。我的减速器通常采用以下形式:
case 'ADD_OBJECT_TO_OBJECT_OF_OBJECTS': {
newState = copyState(state);
newState.objectOfObjects[action.id] = action.obj;
return newState;
}
对于我的 copyState 函数,我通常使用嵌套的 Object.assign() 调用,但避免错误并不是那么简单。为了测试,为了确保我没有改变状态,使用是否正确
const copyState = (state) => {
return JSON.parse(JSON.stringify(state));
};
作为一种保证不改变(redux)状态的方法,不管这个过程有多昂贵?
如果没有,我可以依靠其他任何深拷贝方法来确保我不会改变状态吗?
编辑: 考虑到其他人可能会遇到同样的问题,我会将解决方案转达给我遇到的问题。
我试图调度一个动作,然后在之后的一行中,我试图从上一行更新的存储中访问数据。
dispatchAction(data) // let's say this updates a part of the redux state called 'collection'
console.log(this.props.collection) // This will not be updated!
【问题讨论】:
-
state在copyState中将保持不变 -
给
state一个改变它的.toJSON方法是可能的(但非常愚蠢)。
标签: javascript json reactjs redux state