Willkommen zurück, Freunde!
Heute gehen wir die Grundlagen eines React Hook namens useContext durch. useContext ist ein leistungsstarkes Tool, das über useState hinausgeht und einen globalen Status erstellt, der Informationen an untergeordnete und untergeordnete Komponenten weitergeben kann, ohne Requisiten direkt weiterzugeben.
Aber ich bin mir selbst voraus.
Wenn Sie mit useState nicht vertraut sind, lesen Sie zuerst meinen vorherigen Artikel und kommen Sie dann zurück und lassen Sie sich überraschen!
So verwenden Sie „useState“: https://dev.to/deborah/how-to-use-state-in-react-2pah
Da Sie nun mit „useState“ vertraut sind, tauchen wir ein in „useContext“!
useContext ist ideal für Daten, die in einem globalen Bereich platziert werden müssen (z. B. ein Benutzername, der dafür sorgt, dass jemand während der gesamten Anwendung angemeldet bleibt), aber es ist nicht die ultimative Abkürzung dazu Weitergabe von Requisiten an untergeordnete Komponenten.
UseContext ermöglicht uns jedoch die Übergabe von Daten, ohne Requisiten direkt zu übergeben, und ist daher äußerst hilfreich, wenn wir auf Daten stoßen, auf die mehrere untergeordnete Komponenten zugreifen oder die in der gesamten Anwendung verfügbar gemacht werden müssen.
Um useContext zum Laufen zu bringen, müssen wir zwei Schritte unternehmen: Zuerst müssen wir ein Kontextobjekt erstellen („createContext“), dann müssen wir über einen Anbieter mit dem Hook „useContext“ auf den Wert zugreifen. .
Die folgenden Beispiele wurden vereinfacht, um Ihnen eine bessere Vorstellung davon zu geben, worum es bei useContext geht und wie man es verwendet. Sie sollten sich jedoch darüber im Klaren sein, dass createContext häufig in einer separaten Datei deklariert wird. Ich vergleiche „Parent.js“ jedoch mit einer typischen „App.js“-Datei (einer Komponente oben in der Komponentenhierarchie). In Parent.js habe ich alle meine Statusvariablen und die Funktionen, die diese Statusvariablen aktualisieren, definiert und mit useEffect Abrufe in die Datenbank durchgeführt. Ich habe mich dafür entschieden, createContext in meiner Komponente der obersten Ebene zu deklarieren, anstatt eine eigene Datei zu erstellen, um diese Erklärung zu vereinfachen, damit Sie die Kernkonzepte von Context besser verstehen können.
export Context = React.createContext();
„Context“ ist ein Kontextobjekt, das durch den Aufruf von „createContext“ erstellt wird. Das Kontextobjekt enthält eine Komponente namens Provider, die wir nun aufrufen und dann die Variablen und Funktionen übergeben können, die wir auf unserer „globalen“ Ebene behalten möchten.
return(// Other JSX & the child components we want to hand Context to. );
Um „Context.Provider“ zu vervollständigen, müssen wir auch einen Wert für „Provider“ bereitstellen. Hier übergeben wir ein Objekt mit allen Variablen und Funktionen, die wir mit „Context“ in den untergeordneten Komponenten aufrufen:
return(// Other JSX & the child components we want to hand Context to. );
Es ist SEHR WICHTIG zu beachten, dass wir ALLE untergeordneten Komponenten, die die Variablen und Funktionen verwenden, zwischen den Tags platzieren müssen. Zum Beispiel:
return();
Beachten Sie, dass wir keine Requisiten direkt an die untergeordneten Komponenten übergeben müssen (wie wir es mit „useState“ tun würden), solange wir die Requisiten in „value“ einfügen.
Da wir nun „createContext“ verwendet und alle unsere globalen Elemente an „Context.Provider“ übergeben haben, können wir mit den untergeordneten Komponenten fortfahren und sehen, wie „Context“ verwendet wird.
import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’; function Child(){ const { example, setExample } = useContext(Context) // The rest of our code
In diesem Code verwenden wir geschweifte Klammern {}, um eine Destrukturierungszuweisung zu kennzeichnen. Das ist eine schicke Art zu sagen, dass wir mehrere im Kontext gespeicherte Variablen und Funktionen aufrufen können. Wir übergeben „Context“ auch an „useContext“, damit wir auf die in Context.Provider definierten Werte zugreifen können (die wir in „Parent.js“ deklariert haben).
const expId = example.id;
oder
setExample(newExample);
Glückwunsch! Sie verfügen jetzt über alle Tools, um mit createContext und useContext zu beginnen. Sie verstehen, dass Sie mit useContext so etwas wie einen „globalen Zustand“ erstellen können, der Variablen und Funktionen an Komponenten übergeben kann, ohne Requisiten direkt über untergeordnete Komponenten zu übergeben.
Wir haben uns auch mit den sechs Schritten befasst, die erforderlich sind, damit der Kontext in Ihren Anwendungen funktioniert. Sie können jetzt mit dem Codieren mit createContext und useContext beginnen, aber falls Sie jemals eine Kurzanleitung benötigen, hier:
export const Context = React.createContext();
//Child components
import React, { useContext } from ‘react’;
import Context from “./Parent.js’;
const { example, handleExample } = useContext(Context);
Eine letzte Anmerkung: Wenn Sie tiefer in dieses Thema eintauchen möchten, finden Sie hier die offiziellen Dokumentationsressourcen, auf die ich beim Erlernen von useContext und beim Schreiben dieses Blogs auch verwiesen habe:
Offizielle Dokumentation:
https://react.dev/reference/react/createContext
Offizielle Legacy-Dokumentation, immer noch einigermaßen hilfreich für das Verständnis von useContext:https://legacy.reactjs.org/docs/context.html
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3