Ü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
Zunächst wird setInterval als Hook gekapselt 👇 im...
Inhaltsverzeichnis 1. Szenario 2. Vereinfachen Si...
Installieren Sie zugehörige Abhängigkeiten npm ic...
Zum ersten Mal schreiben. Gestatten Sie mir, mich...
In den vorherigen drei Artikeln wurden gängige Si...
Installieren Sie GeoIP unter Linux yum installier...
Inhaltsverzeichnis Überblick Die Geschichte der C...
Installieren Sie MySQL unter Windows zu Ihrer Inf...
1. Laden Sie den Download-Link herunter Klicken S...
<body style="scroll:no"> <Tabe...
1. Laden Sie die MySQL-Tar-Datei herunter: https:...
Mögliche Lösungen 1. Math.random generiert Zufall...
Standardmäßig ist der Tabellentitel horizontal ze...
Inhaltsverzeichnis 1. Ressourcen und Konstruktion...
Dieser Artikel stellt hauptsächlich die Beispiela...