Heim >Web-Frontend >js-Tutorial >Quellcode-Analyse von React-redux (Code)

Quellcode-Analyse von React-redux (Code)

不言
不言Original
2018-09-14 15:36:511153Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Quellcode-Analyse (Code) von React-Redux. Ich hoffe, dass er für Freunde hilfreich ist.

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 = {
rrree

Der übliche Ansatz besteht darin, dass wir zuerst den Store über Redux erstellen und ihn dann dem Store-Attribut der Provider-Komponente zuweisen. Rufen Sie innerhalb der Provider-Komponente den Store ab und setzen Sie ihn auf das Kontextattribut, damit alle seine Komponenten den Store über den Kontext abrufen können.

             [storeKey]: storeShape.isRequired,
            [subscriptionKey]: subscriptionShape,
        }
    
            return Provider
    }

Verwandte Empfehlungen:

YII-Quellcode-Analyse, YII-Quellcode-Analyse

Symfony2-Quellcode-Analyse Startprozess 2 , Symfony2 Quellcode

Das obige ist der detaillierte Inhalt vonQuellcode-Analyse von React-redux (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn