修改状态&更新减速机的正确方法? (React / Redux)

时间:2017-06-08 13:17:19

标签: javascript reactjs redux react-redux flux

我相信我已经修改了我的状态很长一段时间了。我想做以下事情,并想知道为什么它不起作用:

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;

但在这里,似乎,我正在修改状态。

我想知道我的第一个解决方案是否正确,我的第二个解决方案确实是修改状态。

1 个答案:

答案 0 :(得分:1)

在第二个选项中,您将直接修改状态。

reducer应该在React-Redux应用程序中改变状态而不改变现有状态。

  

不可变性是Redux的要求,因为Redux代表你的   应用程序状态为“冻结对象快照”。随着这些离散   快照,您可以保存您的状态,或反向状态,一般情况下   所有州的变化都有更多的“会计”。 Ref

您将云视为使用且不可变的实用程序/库为dot-prop-immutableImmutable.js

来自redux docs的相关文章:

http://redux.js.org/docs/recipes/reducers/ImmutableUpdatePatterns.html