javascript - 从 useReducer Hook 返回的状态是 "deep copy"还是 reducer 输出的引用?

标签 javascript reactjs redux react-hooks

我目前正在使用 Context API 结合 useReducer Hook 在 React 中实现全局状态处理。

我对可变性有两个担忧:

  • 在我的 reducer 中更新状态时,我是否需要使用 Lodash 的 cloneDeep 函数来切断进入我的 reducer 的对象与存储状态之间的引用?
  • 是否有可能通过在 reducer 之外手动改变它来破坏全局状态,或者它会表现得像“正常的 React 状态”,因为手动改变会在下一个更新周期被覆盖?

供引用:docs

最佳答案

useStateuseReducer 都会为您提供您保存的确切值引用(通过调用 someSetter(newValue),或返回一个值来自 reducer 函数)。

无论哪种情况,手动更改值都是错误的。特别是,如果您返回与上次相同的引用,它们都将退出更新,因此您应该始终不可变地更新值。

关于javascript - 从 useReducer Hook 返回的状态是 "deep copy"还是 reducer 输出的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848745/

相关文章:

javascript - 如何在 jquery 中动态地将分隔符放入数组中?

javascript - 统计推特搜索API返回的页面数

javascript - django leaflet - 在 HTML 页面按钮单击上添加/删除控件

javascript - OAuth弹窗跨域安全React.js

javascript - 如何使用 Jest 来监视 prop 内的方法并将其传递给组件?

angular - 无法添加属性 _$visited,对象不可使用 primeNG、angular 2 和 @ngrx 扩展

php - 由于 Ajax Shoutbox 导致的高 CPU 使用率

javascript - Ant design Form "Warning: ` callback` 已弃用。请返回一个 promise 。”自定义规则错误

react-native - React Native - "You are currently using minified code outside of NODE_ENV === "生产""

javascript - 如何在 react-redux 中使用扩展运算符修改索引处的特定对象?