Übergeordnete Komponente kommuniziert mit untergeordneten Komponenten
Ref-Referenz in übergeordneter Gruppe definieren importiere React, {Component,createRef} von 'react' importiere Child1 aus './Child1' exportiere Standardklasse App erweitert Komponente { Konstruktor (Requisiten) { super(Requisiten) dieses.Kind = createRef() } machen(){ zurückkehren( <div> <Kind1 ref={dieses.Kind}/> <button bei Klick={this.fn.bind(this)}></button> </div> ) } fn(){ const Kind = dieses.Kind.aktuell Kind.setTitle() } } Unterkomponente definiert die Datenquelle und wie die Datenquelle geändert werden kann importiere React, {Component} von 'react' exportiere Standardklasse Child1 erweitert Komponente{ Zustand={ Titel:'Titel' } machen(){ zurückkehren ( <div> {dieser.Zustand.Titel} </div> ) } setzeTitel(){ dies.setstate({Titel:'hh'}) } } Untergeordnete Komponenten kommunizieren mit übergeordneten Komponenten Die übergeordnete Komponente übergibt eine ihrer eigenen Methoden an die untergeordnete Komponente. Sie können in der Methode alles Mögliche tun, z. B. den Status ändern. Die untergeordnete Komponente empfängt die Methode der übergeordneten Komponente über Komponentenübergreifende KommunikationReact verfügt nicht über einen Eventbus wie Vue, um dieses Problem zu lösen. Eine Möglichkeit besteht darin, die gemeinsame übergeordnete Komponente zu verwenden, um es über einen Proxy zu implementieren, aber der Vorgang wird ziemlich umständlich sein. React bietet Kontext, um eine komponentenübergreifende Kommunikation zu erreichen, ohne Props explizit durch jede Ebene des Komponentenbaums übergeben zu müssen.
Vorfahren und Nachkommen
importiere React, {createContext} von „react“ let {Anbieter, Verbraucher} = createContext() exportieren { Anbieter, //Veröffentlichen Verbraucher //Abonnieren} 2. Vorgängerknoten importiere React, {Component} von 'react' importiere {Provider,Consumer} aus './store' Sohn aus './Son' importieren exportiere Standardklasse App erweitert Komponente { Konstruktor (Requisiten) { super(Requisiten) dieser.Zustand={ Name: „mingcen“ } } machen(){ zurückkehren ( <div> <Anbieterwert={this.state.name}> <Sohn/> </Anbieter> </div> ) } } 3. Nachkommenknoten importiere React, {Component} von 'react' importiere {Consumer} aus './store' exportiere Standardklasse Son1 erweitert Komponente{ Konstruktor (Requisiten) { super(Requisiten) dieser.Zustand={ Name: "uuu" } } machen(){ zurückkehren( <div> <Verbraucher> { Wert=>{ <div>{Wert.name}</div> } } </Verbraucher> </div> ) } } Brother-Knotenkommunikation
Vorfahr Zustand={ Anzahl: 1, setCount:()=>{ dies.setState(state=>{ zurückkehren { Anzahl:++Zustand.Anzahl } }) } } machen(){ let {count,setCount} = dieser.Zustand zurückkehren( <div> <Anbieterwert={{count,setCount}}> <Cmp1></Cmp1> <Cmp2></Cmp2> </Anbieter> </div> ) } Bruder Cmp2 importiere React, {Komponente, Kontext erstellen} von 'react' exportiere Standardklasse Cmp2 erweitert Komponente { // Habe nur die Standarddaten erhalten --> nicht in die Providerkomponente gepackt static contextType = createContext rendern() { zurückkehren ( <div> <button onClick={this.setCount.bind(this)}>Daten automatisch inkrementieren</button> </div> ) } setzeAnzahl() { dieser.Kontext.setCount() } } Bruder Cmp1 <Verbraucher> { Wert => <h3>{value.count}</h3> } </Verbraucher> ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: Auszeichnungssprache - CSS-Stile für Text festlegen
>>: Analyse der Nutzung des Xmeter API-Schnittstellentesttools
Die Ladegeschwindigkeit einer Webseite ist ein wic...
Verwenden Sie das RPM-Installationspaket, um MySQ...
Ein Port ändert sich In Version 3.2.0 beträgt der...
1. Erstellen Sie zunächst den entsprechenden Ordn...
Vorwort: Bei Vorstellungsgesprächen für verschied...
Wenn Sie MySQL installieren, wird Ihnen ein erste...
Grundlagen 1. Verwenden Sie Scaffolding, um ein P...
Standardmäßig wird die Konfiguration /etc/default...
Phrasenelemente wie <em></em> können d...
Inhaltsverzeichnis 1. Bestimmen Sie den Entitätst...
Hintergrund: Position: Sticky wird auch Sticky-Po...
In diesem Artikel wird hauptsächlich der Fall vor...
SQL findet alle doppelten Datensätze in einer Tab...
In diesem Artikel finden Sie das Installations- u...
Um die Leistung von MySQL anzupassen und den Dien...