【发布时间】:2018-04-20 03:48:26
【问题描述】:
我真的很好奇 connect 函数如何确定我的状态所在的位置?它与 combineReducer 的功能有什么联系吗?是否从中获取返回值?
【问题讨论】:
-
你看过 Redux 源代码吗?
-
当然,它并没有让我更接近我的问题,因为源代码不是很容易解释。
标签: javascript reactjs redux flux
我真的很好奇 connect 函数如何确定我的状态所在的位置?它与 combineReducer 的功能有什么联系吗?是否从中获取返回值?
【问题讨论】:
标签: javascript reactjs redux flux
React-Redux 的 connect() 函数依赖于 <Provider> 组件将 Redux 存储放入 React 的 context 功能中,因此嵌套在 <Provider> 内的任何组件都可以访问它。
我推荐阅读 Build Yourself a Redux 这篇文章,它涵盖了 Redux 工作原理的许多方面,包括 <Provider> 和 connect()。
【讨论】:
在 React 组件中可以使用 props 或 context 进行编译。
您可以将上下文视为一种全局道具——一旦在提供者类中定义了上下文,就可以在树下的任何地方访问它。 More on context
这就是 react-redux 所做的:它为您提供了 <Provider> 组件,这需要将 store 显式传递给。
<Provider store={store}>
<App ... />
</Provider>,
它负责创建上下文并设置对 redux 存储的引用。
另一方面,connect 函数是 higher order component。它包装您的组件并使其访问提供者的上下文。不用connect 就可以轻松使用store,像这样:
static contextTypes = {
store: PropTypes.object,
};
render() {
const { store } = this.context;
console.log(store);
总结一下:
【讨论】: