在Redux中重写状态

Gra*_*man 3 immutability reactjs immutable.js redux react-redux

在redux中,我理解状态是不可变的,当你创建新状态时,你实际上是用新的信息更新对象,然后完全重写状态.

今天我有一个想法,我不确定它是多么愚蠢.

继续重写国家,计算成本是否昂贵?我知道这是Redux的主要范例之一,但我想知道从内存和空间的角度来看这是否有意义.

Mat*_*ara 6

您可以在Redux中改变状态,但不应该不惜一切代价,因为您将使用Redux反模式进行编码

在vanilla JavaScript或任何框架中变异对象可能会带来许多副作用,这可能会非常痛苦.您应该选择纯函数,除非有必要进行变异.

现在回到Redux,reducers中的函数应该是纯函数.这是为什么:

Redux算法通过比较前一个状态和下一个状态的内存位置检查状态是否已更新.

现在,当您在JavaScript中改变对象时,您只是更新现有对象,因此,内存位置保持不变,并且存储不会更新.改变状态还会禁用Redux devtools的基本功能,需要时间调试.

另一方面,如果不是改变对象而是创建一个新对象,当redux比较previousState的内存位置(更改它之前的状态)和nextState(你发送的新状态)时,此时Redux会实现已经发生了变化,它会以最新状态更新商店.

参考文献: