即使操作/归约器没有更改状态值也要更改状态值

时间:2019-06-06 00:10:19

标签: reactjs redux reference state action

我正在使用相同的动作有效载荷来为状态相同的内容设置两个不同的值。

这是为了让我可以在原始数据没有任何更改之前就可以对其进行比较,最后可以对它们进行比较,例如:

onLoadUserDataSuccess

userData: action.payload
originalUserData: action.payload

问题是,当我有一个更新用户数据但仅更改userData值而不是originalUserData的动作时,我可以在devtools中看到两者都发生了变化。示例:

onUserDataUpdate

userData: action.payload

我能想象的唯一原因是通过引用以某种方式处理了此问题?因此,当userData值更改时,originalUserData会自动更改吗?

我也尝试过使用WillMount钩子将这些原始数据保存在组件状态内,但是如果同时加载其他用户,这将无法正常工作,因为该组件不会重新安装,因此数据来自第一个加载的用户

1 个答案:

答案 0 :(得分:0)

如预期的那样,经过大量阅读后,问题出在以下事实:通过引用处理数组和对象,并且在处理操作有效负载时需要对redux使用react进行操作。

解决方案是创建一个函数,该函数将在每个嵌套级别上返回新状态。

这也可以通过其他库(例如Immutable.js和immer)来完成。

有关不可变更新模式here

的更多信息