gpt4 book ai didi

javascript - Redux 中 Immer 中 Object.assign() 的意外行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:34 26 4
gpt4 key购买 nike

我正在使用 redux-starter-kit(其中包括用于可变更新的 Immer 库)并且由于某种原因这个 reducer 不起作用:

reInitializeState(state, action) {
state = Object.assign({}, initialState);
state.someProperty = true; // this does not get set
},

但是这个确实:

reInitializeState(state, action) {
Object.assign(state, initialState);
state.someProperty = true; // this does
},

我希望他们做同样的事情。这是怎么回事?

最佳答案

使用 Immer,您可以就地改变对象以创建下一个不可变副本。在第一个例子中,因为 state 作为参数进来,做:

state = Object.assign({}, initialState);

state 重新分配给一个新对象,因此在该新对象上设置 someProperty 不会导致任何更改——您必须改变参数本身。

在第二个示例中,您没有将 state 重新分配给其他对象,因此调用 state.someProperty 并修改它会修改原始状态对象。

关于javascript - Redux 中 Immer 中 Object.assign() 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com