【问题标题】:How does Redux's Connect function figure out where my state is?Redux 的 Connect 函数如何确定我的状态在哪里?
【发布时间】:2018-04-20 03:48:26
【问题描述】:

我真的很好奇 connect 函数如何确定我的状态所在的位置?它与 combineReducer 的功能有什么联系吗?是否从中获取返回值?

【问题讨论】:

  • 你看过 Redux 源代码吗?
  • 当然,它并没有让我更接近我的问题,因为源代码不是很容易解释。

标签: javascript reactjs redux flux


【解决方案1】:

React-Redux 的 connect() 函数依赖于 <Provider> 组件将 Redux 存储放入 React 的 context 功能中,因此嵌套在 <Provider> 内的任何组件都可以访问它。

我推荐阅读 Build Yourself a Redux 这篇文章,它涵盖了 Redux 工作原理的许多方面,包括 <Provider>connect()

【讨论】:

    【解决方案2】:

    在 React 组件中可以使用 propscontext 进行编译。 您可以将上下文视为一种全局道具——一旦在提供者类中定义了上下文,就可以在树下的任何地方访问它。 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);
    

    总结一下:

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      相关资源
      最近更新 更多