react-reduxredux

react-redux provider组件

2017-05-10  本文已影响423人  落花的季节

provider组件概念图

react-redux provider组件概念图

provider组件的作用

import React from 'react';
import {render} from "react-dom";
import {createStore} from 'redux';
import {Provider} from "react-redux";
import App from "./containers/App";
import reducer from "./reducer/index";
const store = createStore(reducer);

render(
    <Provider store={store}>
       <App/>
    </Provider>, document.getElementById('app'));

provider组件的原理

export default class Provider extends Component {
  getChildContext() {
    return { store: this.store }
  }

  constructor(props, context) {
    super(props, context)
    this.store = props.store
  }

  render() {
    return Children.only(this.props.children)
  }
}

Provider.propTypes = {
  store: storeShape.isRequired,
  children: PropTypes.element.isRequired
}

Provider.childContextTypes = {
  store: storeShape.isRequired
}

核心代码就这么多,显然,它是一个容器组件。
关键点在:getChildContext,保存了全局唯一的store,类似于全局变量,子组件后续可以通过this.context.store来访问。

通过context传递属性的方式可以大量减少通过props 逐层传递属性的方式,可以减少组件之间的直接依赖关系。

使用示例

最近在写项目,在我的项目中就使用了provider组件,想看更详细的用法,可以看https://github.com/second-Sale/second-sale代码。

上一篇 下一篇

猜你喜欢

热点阅读