Ü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
Konzept von SFTP sftp ist die Abkürzung für Secur...
Inhaltsverzeichnis Vorwort Was sind asynchrone It...
Haben Sie schon einmal eine Situation erlebt, in d...
In diesem Artikel wird der spezifische JS-Code zu...
Seitenverzeichnisstruktur Beachten Sie, dass Sie ...
Inhaltsverzeichnis 1 Mount-Verzeichnisse und Date...
1. Generieren Sie zunächst die öffentlichen und p...
Einführung In diesem Artikel stellen wir vor, wie...
Erhalten Sie tägliche Statistiken Wenn Sie ein Pr...
Übersicht über partitionierte MySQL-Tabellen Da M...
Inhaltsverzeichnis brauchen Kernidee Zwei Möglich...
Ich habe kürzlich MySQL verwendet. Im Artikel „My...
Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...
Fallstricke bei der Projektimplementierung Beim B...
In den vorherigen Artikeln wurde erläutert, wie S...