javascript - 解构 redux reducer 中的默认状态

标签 javascript reactjs redux react-redux reducers

return statereturn { ...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/

相关文章:

reactjs - react onClick 事件

javascript - 你将如何制作一个异步/等待函数来在 React 中显示一个对话框?

reactjs - Ember 应用程序中的状态管理

javascript - Invariant Violation : Element type is invalid: expected a string or a class but got: undefined. 检查 `MyApp` 的渲染方法

javascript - 如何在 Next.js 中访问客户端窗口方法

reactjs - 无法访问要打印到演示组件中的 reducer 状态值?

javascript - 这个 Redux 样板有什么问题?

Javascript 使用 Date() 返回未定义的递归函数

javascript - 切换 div,如果已经打开则隐藏

javascript - 在数组中优雅地查找正则表达式