Kontextdefinition und ZweckDer 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?
Anwendung1. 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 2. Abonnieren Sie den Kontext <MyContext.Provider-Wert={/* ein Wert*/}> Der Provider empfängt ein Es gibt hier zwei verwandte Konzepte
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 <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 //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 // 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:
|
<<: MySQL in Ubuntu 18.04 installieren (grafisches Tutorial)
>>: Grafisches Tutorial zum Herunterladen und Installieren von MySQL 8.0 unter Windows 10
Inhaltsverzeichnis 1. Verwendung 2. Lösen Sie das...
Inhaltsverzeichnis 1. WordPress-Bereitstellung 1....
Inhaltsverzeichnis Lösungsanalyse Scheibe Lebensl...
Das sogenannte Verbindungslimit in Nginx ist tats...
Inhaltsverzeichnis 1. Öffnen Sie das Projektverze...
1. Welche drei Formate? Dies sind: gif, jpg und pn...
Umgesetzt gemäß Online-Tutorial. zabbix3.4, mithi...
@Font-face grundlegende Einführung: @font-face ist...
1. Einleitung Ich habe vor Kurzem an einem Projek...
Inhaltsverzeichnis Vorwort Informationen zu WebSo...
Ich habe es im MSI-Format installiert, hauptsächl...
Flex-Grundkonzepte Flex-Layout (Flex ist die Abkü...
Was ist die CN2-Linie? CN2 steht für China Teleco...
Wenn eine Spalte in einer Datentabelle einmal als...
Bei Verwendung von setinterval wird festgestellt,...