我相信我已经修改了我的状态很长一段时间了。我想做以下事情,并想知道为什么它不起作用:
case "SAVE_DATA_TO_PERSON" :
let newState = {...state, data: {start: action.payload.start, end: action.payload.end}};
return newState;
我在这里创建一个新对象,采用旧状态,并添加我的新数据。 虽然它确实有所作为,但它并没有长时间保存数据。在解雇其他行动之后,这已经消失了。我想知道为什么?
这就是我以前的做法,它似乎有效:
case "SAVE_DATA_TO_PERSON" :
let newState = state;
newState.audio = {start: action.payload.start, end: action.payload.end};
return newState;
但在这里,似乎,我正在修改状态。
我想知道我的第一个解决方案是否正确,我的第二个解决方案确实是修改状态。
答案 0 :(得分:1)
在第二个选项中,您将直接修改状态。
reducer应该在React-Redux应用程序中改变状态而不改变现有状态。
不可变性是Redux的要求,因为Redux代表你的 应用程序状态为“冻结对象快照”。随着这些离散 快照,您可以保存您的状态,或反向状态,一般情况下 所有州的变化都有更多的“会计”。 Ref
您将云视为使用且不可变的实用程序/库为dot-prop-immutable或Immutable.js
来自redux docs的相关文章:
http://redux.js.org/docs/recipes/reducers/ImmutableUpdatePatterns.html