return state
和 return { ...state }
之间的 redux reducer 默认情况下返回状态有什么区别?
最佳答案
与 React 一样,Redux 使用不可变性来有效地检查更新对象引用的更新状态,这就是为什么你不应该直接修改/改变状态。在大多数 reducer 的默认情况下,没有任何操作修改状态,因此您可以返回原始状态对象(return state
),这是安全的,因为它不会被修改。
但是,return { ...state }
将返回相同的状态,但具有不同的顶级对象引用,这将导致对已更改状态进行不必要的检查。如果您根本不修改状态,则应始终返回原始对象 (return state
)。
编辑:添加了一个后续问题——如果你 return { ...state }
Redux 会将更新的状态广播到所有连接到商店的 React 组件(通过钩子(Hook)或连接函数)然后 React 将进入它的生命周期更新。 React 实际上非常高效,它使用内存和其他方法来停止任何昂贵的重新渲染或重新绘制/重新生成 DOM,因此两者在流程方面的差异几乎为零,这是不必要的。我认为它甚至不会像 useEffect 那样重新运行钩子(Hook),它会在到达那里之前看到冗余,或者至少使用 memoize 缓存而不是重新计算
关于javascript - 解构 redux reducer 中的默认状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67109657/