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

Vergleich der Leistung von int, char und varchar in MySQL

Im Internet kursieren viele scheinbar wahre „Gerü...

Dieser Artikel zeigt Ihnen, wie Sie mit CSS-Kombinationsselektoren spielen

CSS-Kombinationsselektoren umfassen verschiedene ...

MySQL-Fehlernummer 1129 – Lösung

SQLyog stellt eine Verbindung zu MySQL her, Fehle...

Ausführliche Erklärung verschiedener binärer Objektbeziehungen in JavaScript

Inhaltsverzeichnis Vorwort Beziehungen zwischen v...

MySQL-Optimierung: So schreiben Sie hochwertige SQL-Anweisungen

Vorwort Im Internet gibt es zahlreiche Informatio...

Was sind die Vorteile einer semantischen HTML-Struktur?

eins: 1. Semantische Tags sind lediglich HTML, CS...

JS removeAttribute()-Methode zum Löschen eines Attributs eines Elements

Verwenden Sie in JavaScript die Methode removeAtt...

MySQL 5.7.20 Zip-Installations-Tutorial

MySQL 5.7.20 Zip-Installation, der spezifische In...

Eingebettetes Transplantations-Docker-Fehlerproblem (Zusammenfassung)

Nach einer langen Zeit der Transplantation und In...

HTML+CSS+jQuery imitiert den Such-Hotlist-Tab-Effekt mit Screenshots

Code kopieren Der Code lautet wie folgt: <!DOC...

Detaillierte Erläuterung gängiger Methoden von JavaScript-Arrays

Inhaltsverzeichnis Gängige Array-Methoden Pop() u...

Beispiele für die korrekte Verwendung von Karten in WeChat-Miniprogrammen

Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Tat...

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

Zabbix überwacht den Prozess der Linux-Systemdienste

Zabbix erkennt automatisch Regeln zur Überwachung...