Reactjs Redux中的重写状态
在redux中,我理解状态是不可变的,当您创建新状态时,您实际上是在用任何新信息更新对象,然后完全重写状态 今天我有一个想法,我不知道这有多愚蠢Reactjs Redux中的重写状态,reactjs,redux,react-redux,immutability,immutable.js,Reactjs,Redux,React Redux,Immutability,Immutable.js,在redux中,我理解状态是不可变的,当您创建新状态时,您实际上是在用任何新信息更新对象,然后完全重写状态 今天我有一个想法,我不知道这有多愚蠢 继续重写状态在计算上是否昂贵?我知道这是Redux的主要范例之一,但我想知道从内存和空间的角度来看这是否有意义 您可以在Redux中更改状态,但不应为此付出任何代价,因为您将使用 在普通JavaScript或任何框架中,改变对象可能会带来许多副作用,这可能会让调试非常痛苦。除非有必要变异,否则你应该选择 现在回到Redux,reducer中的函数应该是
继续重写状态在计算上是否昂贵?我知道这是Redux的主要范例之一,但我想知道从内存和空间的角度来看这是否有意义 您可以在Redux中更改状态,但不应为此付出任何代价,因为您将使用 在普通JavaScript或任何框架中,改变对象可能会带来许多副作用,这可能会让调试非常痛苦。除非有必要变异,否则你应该选择 现在回到Redux,reducer中的函数应该是纯函数。原因如下: 通过比较上一个状态和下一个状态的内存位置,检查状态是否已更新 现在,当您在JavaScript中改变一个对象时,您只是在更新一个现有的对象,因此,内存位置保持不变,存储不会得到更新。改变状态也会禁用时间旅行到调试的一个基本功能 另一方面,如果redux在比较前一个状态(更改前的状态)和下一个状态(您发送的新状态)的内存位置时,没有更改对象,而是创建了一个新的对象,那么此时redux会意识到发生了更改,并使用您的最新状态更新存储 参考文献:
- Redux反模式:
- 不纯净的功能和Redux devtools的问题:
- 什么是纯函数?
- 为什么Redux需要还原器是“纯函数”
- Redux开发工具: