ホームページ >ウェブフロントエンド >jsチュートリアル >React-reduxのソースコード解析(コード)

React-reduxのソースコード解析(コード)

不言
不言オリジナル
2018-09-14 15:36:511134ブラウズ

この記事は React-redux のソースコード分析 (コード) を提供します。必要な方は参考にしていただければ幸いです。

プロバイダー

   //最后导出的是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 コンポーネント内でストアを取得し、それを context 属性に設定します。これにより、そのすべてのコンポーネントがコンテキストを通じてストアを取得できるようになります。

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

関連する推奨事項:

YII ソース コード分析、YII ソース コード分析

##Symfony2 ソース コード分析起動プロセス 2、 symfony2 ソースコード

以上がReact-reduxのソースコード解析(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。