为什么react-redux将store传递给上下文?
为什么 react-redux 在后台使用 Provider 将 store 传递给 React 的上下文,因为我们可以使用 store.disptach 调度并使用 store.getState 获取状态,所以基本上所有功能都可以在不使用React.createContext 的情况下实现。我在这里错过了什么吗?或者这样做还有其他好处吗?
谢谢
回答
React 的 Context API 实际上是一个轻量级的依赖注入系统。与任何 DI 系统一样,其价值在于避免在编译时将您的逻辑绑定到特定实例或实现。
具体来说,对于 React-Redux,Redux 连接逻辑的许多部分需要在运行时与某个Redux 存储实例进行对话,但是我们不知道在我们编写代码时将是哪个Redux 存储实例。例如:
- 您的应用程序组件可能会在实际应用程序中使用已知的单例存储实例,但您需要为每个单元测试动态创建一个唯一的存储实例:https : //redux.js.org/recipes/writing-tests#connected-成分
- 您可能将与 Redux 连接的组件发布为库,而那些肯定不知道用户将使用哪个 Redux 存储
因此,通过上下文传承商店允许我们编写组件相互作用与一个商店,但我们不关心它存放它。这在运行时被注入。
通常,不要将 Redux 存储直接导入到您的组件(或其他文件)中:https : //redux.js.org/style-guide/style-guide#only-one-redux-store-per-app