gpt4 book ai didi

javascript - 修改状态和更新我的 reducer 的正确方法? ( react /Redux)

转载 作者:行者123 更新时间:2023-12-03 04:08:31 27 4
gpt4 key购买 nike

我相信我已经改变自己的状态有一段时间了。我想做以下事情,但想知道为什么它不起作用:

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;

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

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

最佳答案

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

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

Immutability is a requirement of Redux because Redux represents your application state as "frozen object snapshots". With these discrete snapshots, you can save your state, or reverse state, and generally have more "accounting" for all state changes. Ref.

您云考虑使用不可变的实用程序/库作为 dot-prop-immutableImmutable.js

来自 redux 文档的相关文章:

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

关于javascript - 修改状态和更新我的 reducer 的正确方法? ( react /Redux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44436850/

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