>웹 프론트엔드 >JS 튜토리얼 >React-redux 소스코드 분석(코드)

React-redux 소스코드 분석(코드)

不言
不言원래의
2018-09-14 15:36:511134검색

이 글은 React-redux의 소스코드 분석(코드)을 담고 있습니다. 도움이 필요한 친구들이 참고하시면 좋겠습니다.

Provider

   //最后导出的是createProvider()。所以一开始storeKey应该是以默认值‘store’传进去的
   function createProvider(storeKey = 'store', subKey) {
   const subscriptionKey = subKey || `${storeKey}Subscription`

   class Provider extends Component {
       //设置context,能让子组件拿到store
       //相当于返回 {store: this.store}
       getChildContext() {
         return { [storeKey]: this[storeKey], [subscriptionKey]: null }
       }

       constructor(props, context) {
         super(props, context)
         //this.store = props.store
         this[storeKey] = props.store;
       }

       render() {
         //只能有一个子组件
         return Children.only(this.props.children)
       }
   }
   
   //props和context类型验证
   Provider.propTypes = {
       store: storeShape.isRequired,
       children: PropTypes.element.isRequired,
   }
   Provider.childContextTypes = {
             [storeKey]: storeShape.isRequired,
            [subscriptionKey]: subscriptionShape,
        }
    
            return Provider
    }

일반적인 접근 방식은 먼저 redux를 통해 스토어를 생성한 다음 이를 Provider 구성 요소의 store 속성에 할당하는 것입니다. Provider 구성 요소 내에서 저장소를 가져와서 컨텍스트 속성으로 설정하면 모든 구성 요소가 컨텍스트를 통해 저장소를 가져올 수 있습니다.

   <Provider store={store}>
       <App />
   </Provider>

관련 추천 :

YII 소스코드 분석, YII 소스코드 분석

Symfony2 소스코드 분석 시작 프로세스 2, Symfony2 소스코드

위 내용은 React-redux 소스코드 분석(코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.