我目前正在使用 Context API 结合 useReducer
Hook 在 React 中实现全局状态处理。
我对可变性有两个担忧:
- 在我的 reducer 中更新状态时,我是否需要使用 Lodash 的
cloneDeep
函数来切断进入我的 reducer 的对象与存储状态之间的引用? - 是否有可能通过在 reducer 之外手动改变它来破坏全局状态,或者它会表现得像“正常的 React 状态”,因为手动改变会在下一个更新周期被覆盖?
供引用:docs
最佳答案
useState
和 useReducer
都会为您提供您保存的确切值引用(通过调用 someSetter(newValue)
,或返回一个值来自 reducer 函数)。
无论哪种情况,手动更改值都是错误的。特别是,如果您返回与上次相同的引用,它们都将退出更新,因此您应该始终不可变地更新值。
关于javascript - 从 useReducer Hook 返回的状态是 "deep copy"还是 reducer 输出的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848745/