为什么在 Redux 中直接使用 "this.props.dispatch" 而不是 "store.dispatch"?

Why use "this.props.dispatch" rather than "store.dispatch" directly in Redux?

直接使用store.dispatch有什么坏处吗?

在我看来它更容易调用(因为它可用于所有子组件)并且在我到目前为止的测试中,我还没有发现差异。

谢谢!

通常我发现存储在顶层模块中初始化,然后通过 react-redux connect 函数在较低层模块中使用。

这样就不需要直接在较低级别的模块中导入商店,因为它会从顶层导入。

universal apps 中,您需要针对每个请求使用不同的商店实例。如果您只是从某个模块将商店导出为单例,您将很难添加服务器渲染。

这就是为什么我们从不鼓励在文档中使用单例存储,而是始终鼓励您使用 <Provider> to pass it down the hierarchy via React context。这使得存储对消费组件可用,而无需使其成为单例。

至于为什么 React Redux 中的 connect() 传递 dispatch 作为 prop 而不是 store 本身——这是因为你并不真的需要 store 本身连接的组件。订阅和阅读状态由 connect() 完成,因此您只需要 dispatch() 在组件中。