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

Verwendung des Linux-SFTP-Befehls

Konzept von SFTP sftp ist die Abkürzung für Secur...

Detaillierte Erklärung asynchroner Iteratoren in nodejs

Inhaltsverzeichnis Vorwort Was sind asynchrone It...

Methoden und Techniken zur Gestaltung einer interessanten Website (Bild)

Haben Sie schon einmal eine Situation erlebt, in d...

JS implementiert einfachen Kalendereffekt

In diesem Artikel wird der spezifische JS-Code zu...

Vue-CLI - Aufzeichnung der Schritte zur mehrseitigen Verzeichnisverpackung

Seitenverzeichnisstruktur Beachten Sie, dass Sie ...

Docker-Fallanalyse: Erstellen eines Redis-Dienstes

Inhaltsverzeichnis 1 Mount-Verzeichnisse und Date...

So konfigurieren Sie SSH für die Anmeldung bei Linux mit Git Bash

1. Generieren Sie zunächst die öffentlichen und p...

MySQL Best Practices: Grundlegende Arten von Partitionstabellen

Übersicht über partitionierte MySQL-Tabellen Da M...

So verwenden Sie React-Slots

Inhaltsverzeichnis brauchen Kernidee Zwei Möglich...

Installieren Sie MySQL 5.7.18 mit dem RPM-Paket unter CentOS 7

Ich habe kürzlich MySQL verwendet. Im Artikel „My...

Warum ist der MySQL-Autoinkrement-Primärschlüssel nicht kontinuierlich?

Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...

So richten Sie den Start einer JAR-Anwendung unter CentOS7 ein

Fallstricke bei der Projektimplementierung Beim B...