Analyse von Context-Anwendungsszenarien in React

Analyse von Context-Anwendungsszenarien in React

Kontextdefinition und Zweck

Der Kontext bietet eine Möglichkeit, Daten zwischen Komponenten auszutauschen, ohne dass Eigenschaften explizit an die Komponentenstruktur weitergegeben werden müssen.

Welche Daten müssen in Anwendungsszenarien geteilt werden?

Der Kontext ist dafür ausgelegt, Daten „global“ für einen Komponentenbaum freizugeben, wie etwa den aktuell authentifizierten Benutzer, das Design oder die bevorzugte Sprache.

Anwendung

1. Kontext erstellen und initialisieren

const MyContext = createContext(Standardwert);

Erstellen Sie ein Kontextobjekt. Wenn React eine Komponente rendert, die dieses Kontextobjekt abonniert, liest die Komponente den aktuellen Kontextwert vom passenden Provider , der ihr im Komponentenbaum am nächsten ist.

2. Abonnieren Sie den Kontext

<MyContext.Provider-Wert={/* ein Wert*/}>

Der Provider empfängt ein value und übergibt es an die nutzende Komponente. Ein Provider kann eine entsprechende Beziehung zu mehreren Consumer-Komponenten haben. Es können auch mehrere Provider verschachtelt werden, wobei die inneren die Daten der äußeren überschreiben.

Es gibt hier zwei verwandte Konzepte

  • Anbieter – Ein Kontextanbieter oder ein Abonnent eines Kontexts. Es kann so verstanden werden, dass es Änderungen des Kontextwerts seiner internen Komponenten über den Anbieter abonniert. Sobald sich der Kontextwert ändert, wird eine erneute Darstellung der internen Komponenten ausgelöst.
  • Verbraucher – Kontextverbraucher (verbrauchende Komponente) oder Kontextbenutzer. Das heißt, verwenden Sie useContext() innerhalb des Providers, um Kontextkomponenten zu verwenden oder zu nutzen. Diese Komponenten erhalten und verwenden den neuesten Kontextwert über useContext().

3. Conext verwenden

3.1 Verwendung in React-Komponenten

konstanter Wert = useContext(MeinContext);

Verweisen Sie auf den Kontext in der verwendenden Komponente. Der Wert liest den aktuellen Kontextwert vom passenden Provider, der ihm im Komponentenbaum am nächsten ist.

3.2 Einsatz in reinen Funktionsbauteilen

In einer rein funktionalen Komponente können Sie Consumer verwenden, um auf den Kontextwert zu verweisen. Wenn in der oberen Ebene kein entsprechender Provider vorhanden ist, entspricht der Wert dem an createContext() übergebenen defaultValue .

<MeinKontext.Verbraucher>
  {value => /* basierend auf Kontextwert rendern */}
</MeinKontext.Verbraucher>

4. Kontextaktualisierung

4.1 Kontext von oben nach unten aktualisieren

Unter Top-Down-Aktualisierung versteht man die Aktualisierung des Werts des Providers. Wenn sich value Wert des Providers ändert, werden die durch useContext erhaltenen Werte in allen darin enthaltenen verwendenden Komponenten automatisch aktualisiert und lösen ein erneutes Rendern aus.

//App.js

// ....

exportiere Standardfunktion App() {
    //...
    
    // 
    const {contextValue, setContextValue} = React.useState(initialValue);

    // Funktion zum Aktualisieren des Kontextwerts
    Funktion updateContext(neuerWert) {
        // ...

        // Das Aktualisieren von contextValue, ConsumerComponent1, ConsumerComponent2, ConsumerComponent3, ConsumerComponent11 löst ein erneutes Rendering aus.
        setzeKontextwert(neuerWert)
    }

    ...
    zurückkehren (
        <App>
            <MyContext.Provider-Wert={contextValue}>
                <Verbraucherkomponente1>
                    <Verbraucherkomponente11>
    					// ....
                    </ConsumerComponent11>
                </ConsumerComponent1>

                <Verbraucherkomponente2 />
                <ConsumerComponent3 />
            </MeinContext.Provider>
        </App>
    );
    
}

4.2 Bottom-up (von konsumierenden Komponenten) Kontextaktualisierung

In manchen Fällen muss context in einer verwendenden Komponente aktualisiert und an das gesamte Programm angepasst werden. Ändern Sie beispielsweise den UI-Stil über die setting der Anwendung. Zu diesem Zeitpunkt ist es erforderlich, das Update Schicht für Schicht über Rückrufe an den entsprechenden Provider weiterzuleiten, value zu aktualisieren und so die Aktualisierung aller zugehörigen Consumer-Komponenten auszulösen.

// app.js

exportiere Standardfunktion App() {
    ...
    const {contextValue, setContextValue} = React.useState(initialValue);

    // Funktion zum Aktualisieren des Kontextwerts
    Funktion updateContext(neuerWert) {
        // ...

        // Das Aktualisieren von contextValue, ConsumerComponent1, ConsumerComponent2, ConsumerComponent3, ConsumerComponent11 löst ein erneutes Rendering aus.
        setzeKontextwert(neuerWert)
    }

    ...
    zurückkehren (
        <App>
            <MyContext.Provider-Wert={contextValue}>
                <Verbraucherkomponente1>
                    <ConsumerComponent11 updateValue={updateContext}> // Aktualisieren Sie contextValue in ConsumerComponent11 durch Callback-Eigenschaften. Da contextValue zum Wert des Providers der obersten Ebene gehört, wird auch ein erneutes Rendern von ConsumerComponent1, ConsumerComponent2 und ConsumerComponent3 ausgelöst.
                    </ConsumerComponent11>
                </ConsumerComponent1>

                <Verbraucherkomponente2 />
                <ConsumerComponent3 />
            </MeinContext.Provider>
        </App>
    );
}

4.3 Anbieterverschachtelung

In einigen Fällen können die Anbieter desselben Kontexts verschachtelt sein, was als zwei Kontexte verstanden werden kann. Der Unterschied ist,

...
const {contextValue, setContextValue} = React.useState(initialValue);

// Funktion zum Aktualisieren des Kontextwerts
Funktion updateContext(neuerWert) {
    // ...
    
    // Das Aktualisieren von contextValue, ConsumerComponent1, ConsumerComponent2, ConsumerComponent3, ConsumerComponent11 löst ein erneutes Rendering aus.
    setzeKontextWert(neuerWert)
}

...
zurückkehren (
	<App>
        <MyContext.Provider-Wert={contextValue}>
            <Verbraucherkomponente1>
                <Verbraucherkomponente11 />
            </ConsumerComponent1>

            <Verbraucherkomponente2>
                ...
                // Wenn Sie nur die Werte in ConsumerComponent21 und ConsumerComponent22 aktualisieren möchten const localContextValue = useContext(MyContext); // Holen Sie sich den aktuellen Wert vom Provider der oberen Ebene const {tempContextValue, setTempContextValue} = React.useState(localContextValue);

				Funktion updateTempContext(neuerWert) {
                    // Das Update hier löst nur das erneute Rendern von ConsumerComponent21 und ConsumerComponent22 aus. setTempContextValue(newValue); 
                }

				// Erstellen Sie hier einen neuen Provider, um Daten zwischen ConsumerComponent21 und ConsumerComponent22 zu teilen.
                <MyContext.Provider-Wert={tempValue}>
                    <Verbraucherkomponente21>
                    	// Abonnieren Sie in ConsumerComponent21 über useContext(MyContext) // Der erhaltene Wert ist der Kontextwert, der vom ihm am nächsten liegenden passenden Provider gelesen wird, also tempValue
                    </ConsumerComponent21>
                    <Verbraucherkomponente22>
                    </ConsumerComponent22>
				</MyContext.Provider-Wert={contextValue}>
            </ConsumerComponent2>
            <ConsumerComponent3 />
        </MeinContext.Provider>
    </App>
);

Offizielle Dokumentation

Die offizielle Dokumentation finden Sie in den grundlegenden und erweiterten Tutorials weiter unten.

Hooks-API-Index – React (reactjs.org)

Kontext – React (reactjs.org)

Das Obige ist der detaillierte Inhalt der Analyse von Kontextanwendungsszenarien in React. Weitere Informationen zu Kontext in React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Lassen Sie uns über mein Verständnis und meine Anwendung von React Context sprechen
  • Verwenden Sie den Reaktionskontext, um die Vue-Slot-Funktion zu implementieren
  • Ein kurzer Vergleich von Props in React
  • So verwenden und begrenzen Sie Requisiten in React
  • Detaillierte Erläuterung der Verwendung von Requisiten in den drei Hauptattributen von React
  • Kontext und Eigenschaften von React erklärt

<<:  MySQL in Ubuntu 18.04 installieren (grafisches Tutorial)

>>:  Grafisches Tutorial zum Herunterladen und Installieren von MySQL 8.0 unter Windows 10

Artikel empfehlen

Was Sie über Filter in Vue wissen müssen

Inhaltsverzeichnis Vorwort Was ist ein Filter So ...

MySQL Community Server 5.7.19 Installationshandbuch (detailliert)

Link zum Download der ZIP-Datei auf der offiziell...

So konfigurieren Sie Linux CentOS für die regelmäßige Ausführung von Skripten

Oft möchten wir, dass der Server regelmäßig ein S...

CentOS 7 - Lösungsprozessdiagramm für vergessene Passwörter

brauchen Unabhängig davon, ob es sich um ein Wind...

Spezifische Verwendung von MySQL-Operatoren (und, oder, in, nicht)

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

1. Informationen zur Installation von Docker find...

Entwickeln Sie Beispielcode für einen Taschenrechner mit nativem JavaScript

Die Hauptfunktion eines Rechners besteht darin, n...

WebWorker kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Implementieren ...

Der einfachste Weg, das MySQL-Root-Passwort zurückzusetzen

Meine MySQL-Version ist MySQL V5.7.9, bitte verwe...

Zusammenfassung und Beispiele der Kommunikationsmethoden für Vue3-Komponenten

Die Kommunikationsmodi der Vue3-Komponenten sind ...

Detaillierte Erklärung von BOM und DOM in JavaScript

Inhaltsverzeichnis BOM (Browserobjektmodell) 1. F...

Vollständige Analyse der MySQL-Datentypen

Datentyp: Die grundlegenden Regeln, die definiere...