这个问题没有实际目的,只是尝试连接概念以让我了解从 Redux 切换到 usinguseReducer
和 React 上下文 - 与
useReducer 一起使用时的 Context 基本上是一个仅可用于显式导入它的组件的 redux 存储?
2 回答
不。Context 和 Redux 是非常不同的工具,它们解决的问题非常不同。
上下文只是一种使组件树的一部分可以访问单个值的机制。您可以编写代码来确定该值是什么以及如何更新它。这通常通过将数据存储在 React 组件状态中并创建一个传递给<MyContext.Provider>
.
Redux 是一个独立的与 UI 无关的状态管理库,旨在帮助您编写可预测的状态更新逻辑并跟踪您的状态何时、何地、为什么以及如何随着时间的推移而更新,React-Redux UI 绑定层允许您的 React 组件与那个 Redux store 交互。
现在,是的,useReducer+useContext
在组件如何与 Redux 交互方面确实与 Redux 有一些相似之处,但它们在组件重新渲染的时间和原因方面也有非常不同的性能特征。
请参阅我关于React 渲染行为的(主要)完整指南的大量帖子以及我的附加帖子Redux - 还没有死!和React、Redux 和 Context Behavior详细了解 Redux 和 Context 的区别以及如何
通过useContext
,useReducer
也许useSelector
)来实现 react-redux 的确切逻辑并不难
但是useContext
+useReducer
并不是 Redux 的完全替代品。
useReducer
只是useState
.
并useContext
附带https://en.reactjs.org/docs/context.html#caveats
要存储多个值,您必须https://en.reactjs.org/docs/context.html#sumption-multiple-contexts