Detaillierte Erklärung der Komponentenkommunikation in React

Detaillierte Erklärung der Komponentenkommunikation in React

Übergeordnete Komponente kommuniziert mit untergeordneten Komponenten

  • Die übergeordnete Komponente übergibt ihren Status an die untergeordnete Komponente und die untergeordnete Komponente erhält ihn als Eigenschaft. Wenn die übergeordnete Komponente ihren Status ändert, ändert sich die von der untergeordneten Komponente empfangene Eigenschaft.
  • Die übergeordnete Komponente verwendet ref, um die untergeordnete Komponente zu markieren, und ändert den Status der untergeordneten Komponente, indem sie die Methode der untergeordneten Komponente aufruft. Die übergeordnete Komponente kann auch die Methode der untergeordneten Komponente aufrufen.

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 this.props und ruft sie auf.

Komponentenübergreifende Kommunikation

React 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.

Komplexe Kommunikation zwischen nicht übergeordneten und untergeordneten Komponenten ist in React schwierig zu handhaben, und die gemeinsame Nutzung von Daten zwischen mehreren Komponenten ist ebenfalls schwierig zu handhaben. In der tatsächlichen Arbeit werden wir Flux, Redux und Mobx zur Implementierung verwenden

Vorfahren und Nachkommen

  1. Definieren Sie die Store-Klasse zum Exportieren von Provider und COnsumer in createContext
  2. Veröffentlichen Sie eine Nachricht im Vorgängerknoten: Anbieterwert = beliebige Daten
  3. Abonnieren in untergeordneten Knoten: Consumer-Callback-Funktion {value=>(component)}
    1. Definieren Sie den Datenquellenspeicher
    store.js
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

  • Dem Ereignis wird ein untergeordnetes Objekt zugeordnet
  • Ein weiterer hängt an den Eigenschaften
  • Indem Sie die Eigenschaften einer anderen Komponente ändern, können Sie den von einer anderen Komponente akzeptierten Inhalt ändern.

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>

Zusammenfassen

Dieser 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:
  • Implementierungsmethode für die Kommunikation zwischen übergeordneten und untergeordneten Komponenten von React
  • Der Kommunikationsprozess zwischen verschachtelten Komponenten und verschachtelten Komponenten in React
  • Beispiel für die Kommunikation mit React-Komponenten
  • React-Datenübertragungsmethode für die interne Kommunikation zwischen Komponenten
  • Detaillierte Erläuterung verschiedener Möglichkeiten der Komponentenkommunikation in React
  • React-Entwicklungstutorial: Kommunikation zwischen React-Komponenten
  • Detaillierte Erläuterung der Komponentenkommunikationsprobleme in React
  • Beispielcode für die Kommunikation zwischen React-Komponenten
  • Drei Möglichkeiten zur Kommunikation zwischen React-Komponenten (einfach und benutzerfreundlich)

<<:  Auszeichnungssprache - CSS-Stile für Text festlegen

>>:  Analyse der Nutzung des Xmeter API-Schnittstellentesttools

Artikel empfehlen

React+Typescript implementiert die Countdown-Hook-Methode

Zunächst wird setInterval als Hook gekapselt 👇 im...

Quickjs kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Vereinfachen Si...

React-Konfiguration px-Konvertierung rem-Methode

Installieren Sie zugehörige Abhängigkeiten npm ic...

Methode zur Wiederherstellung von Betriebs- und Wartungsdaten der MySQL-Datenbank

In den vorherigen drei Artikeln wurden gängige Si...

Tiefgreifendes Verständnis von Worker-Threads in Node.js

Inhaltsverzeichnis Überblick Die Geschichte der C...

MySQL 8.0.21 Installationstutorial mit Bildern und Text

1. Laden Sie den Download-Link herunter Klicken S...

Adaptive HTML-Tabellenmethode

<body style="scroll:no"> <Tabe...

Installationsschritte von MySQL unter Linux

1. Laden Sie die MySQL-Tar-Datei herunter: https:...

Mehrere Möglichkeiten zum Generieren eindeutiger IDs in JavaScript

Mögliche Lösungen 1. Math.random generiert Zufall...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...

Beispielanalyse der MySQL-Datumsverarbeitungsfunktion

Dieser Artikel stellt hauptsächlich die Beispiela...