react-redux 如何在子组件里访问store对象


1. 要在constructor-super里接收context对象

2. 给组件(class / pure function)指定contextType属性,用来接收store对象

以下代码模拟了connect(类似react-redux里connect的功能)高阶组件的实现:

function connect(mapStateToProps=doNothing, mapDispatchToProps=doNothing){
  return function( WrappedComponent ){
    class HOC extends React.Component{
     constructor(props, context){ super(props, context); }

      render(){
        const store = this.context.store;
        const stateProps = mapStateToProps(store.getState());// deliver state
        const dispatchProps = mapDispatchToProps(store.dispatch);// deliver dispatch
        const props = {...stateProps, ...dispatchProps};
        return <WrappedComponent {...props}/>;
      }
    }
   HOC.contextTypes = { // get store from context
      store: PropTypes.object
    }
    return HOC;
  }
}

export {connect};

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM