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

Implementierung der Docker Compose-Mehrcontainerbereitstellung

Inhaltsverzeichnis 1. WordPress-Bereitstellung 1....

Node.js implementiert die Wiederaufnahme von Haltepunkten

Inhaltsverzeichnis Lösungsanalyse Scheibe Lebensl...

Spezifische Schritte zur Verwendung des Vant-Frameworks im WeChat-Applet

Inhaltsverzeichnis 1. Öffnen Sie das Projektverze...

Welche Bilddateiformate gibt es und wie wählt man sie aus?

1. Welche drei Formate? Dies sind: gif, jpg und pn...

So implementieren Sie E-Mail-Benachrichtigungen in Zabbix

Umgesetzt gemäß Online-Tutorial. zabbix3.4, mithi...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

So verwenden Sie webSocket zum Aktualisieren des Echtzeitwetters in Vue

Inhaltsverzeichnis Vorwort Informationen zu WebSo...

Win10 Installation von MySQL 5.7 MSI-Version des Tutorials mit Bildern und Text

Ich habe es im MSI-Format installiert, hauptsächl...

Neues CSS3-Layout: ausführliche Flex-Erklärung

Flex-Grundkonzepte Flex-Layout (Flex ist die Abkü...

Was bedeuten CN2, GIA, CIA, BGP und IPLC?

Was ist die CN2-Linie? CN2 steht für China Teleco...

SQL IDENTITY_INSERT-Fallstudie

Wenn eine Spalte in einer Datentabelle einmal als...

JavaScript-Lösung für die Setinterval-Verzögerung um eine Sekunde

Bei Verwendung von setinterval wird festgestellt,...