Einführung
In diesem Projekt lernst du, wie du eine React-Anwendung erstellst, die es Benutzern ermöglicht, zwischen Licht- und Dunkelmodus umzuschalten. Das Projekt zeigt die Verwendung der React Context API und des useContext-Hooks, um den globalen Thementzustand zu verwalten.
👀 Vorschau

🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du einen
ThemeContextmithilfe der React Context API erstellst - Wie du den
ThemeContextimApp-Komponenten verwendest, um den gesamten Anwendungsstil basierend auf dem Thema zu ändern - Wie du den
ThemeContextimCard-Komponenten verwendest, um die Kartenstile basierend auf dem Thema zu ändern - Wie du die
App-Komponente mit demThemeProviderumschließt, um den Themenkontext für die gesamte Anwendung verfügbar zu machen
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Zu verstehen, wie die React Context API verwendet wird, um den globalen Zustand zu verwalten
- Den
useContext-Hook anzuwenden, um auf die Kontextwerte zuzugreifen - Unterschiedliche Stile basierend auf dem aktuellen Thema zu implementieren
- Den Thema umzuschalten und den globalen Zustand zu aktualisieren
Projekt einrichten
In diesem Schritt lernst du, wie du das Projekt einrichtest und die erforderlichen Abhängigkeiten installierst.
Öffne deinen Code-Editor und navigiere zum Projektverzeichnis.
├── components
│ └── Card.js
├── contexts
│ └── ThemeContext.js
├── App.css
├── App.js
├── index.css
├── index.js
├── reportWebVitals.js
└── setupTests.js
Dateibeschreibungen:
- Das
components-Verzeichnis enthält alle Komponentendateien. - Das
contexts-Verzeichnis enthält die DateiThemeContext.js, die abgeschlossen werden muss.
Da es sich um ein React-Projekt handelt, müssen wir die Abhängigkeiten installieren, indem wir folgenden Befehl ausführen:
npm install
Nachdem die Abhängigkeiten installiert wurden, folge diesen Schritten, um auf das Projekt zuzugreifen:
- Starte einen lokalen Server, indem du folgenden Befehl in der Konsole ausführst:
npm start
- Öffne den Webserver auf der rechten Seite der Codierumgebung. Du wirst den statischen Effekt wie unten gezeigt sehen. Derzeit hat das Klicken auf die Schaltfläche "Dunkler Modus" keine Auswirkungen.

ThemeContext erstellen
In diesem Schritt lernst du, wie du den ThemeContext mithilfe der React Context API erstellst. Folge den Schritten unten, um diesen Schritt abzuschließen:
Öffne die Datei
ThemeContext.jsim Verzeichnissrc/contexts.Erstelle den
ThemeContextmitReact.createContext():export const ThemeContext = React.createContext();Erstelle den
ThemeProvider-Komponenten, der dieApp-Komponente umschließt und den Themenkontext bereitstellt:export const ThemeProvider = (props) => { const [theme, setTheme] = React.useState("light"); return ( <ThemeContext.Provider value={{ theme, setTheme }}> {props.children} </ThemeContext.Provider> ); };Die
ThemeProvider-Komponente initialisiert dentheme-Zustand mit "light" und stellt dietheme- undsetTheme-Werte dem Kontext zur Verfügung.
ThemeContext in der App-Komponente verwenden
In diesem Schritt lernst du, wie du den ThemeContext in der App-Komponente verwendest, um den gesamten Anwendungsstil basierend auf dem Thema zu ändern.
Öffne die Datei
src/App.js.Verwende den
useContext-Hook, um dentheme-Wert aus demThemeContextzu erhalten:const { theme } = useContext(ThemeContext);Aktualisiere die JSX der
App-Komponente, um unterschiedliche Stile basierend auf demtheme-Wert anzuwenden:return ( <div className={theme === "light" ? "app app-light" : "app app-dark"}> <Card></Card> </div> );Die Klassen
app-lightundapp-darkwerden basierend auf demtheme-Wert auf das Haupt-div-Element angewendet.
ThemeContext in der Card-Komponente verwenden
In diesem Schritt lernst du, wie du den ThemeContext in der Card-Komponente verwendest, um die Kartenstile basierend auf dem Thema zu ändern.
Öffne die Datei
src/components/Card.js.Verwende den
useContext-Hook, um dietheme- undsetTheme-Werte aus demThemeContextzu erhalten:export const Card = () => { const { theme, setTheme } = useContext(ThemeContext); //... };Implementiere die
handleThemeToggle-Funktion, um das Thema umzuschalten:const handleThemeToggle = (e) => { setTheme(theme === "light" ? "dark" : "light"); };Diese Funktion wird den
theme-Wert imThemeContextaktualisieren, wenn die Schaltfläche geklickt wird.
Verhülle die App-Komponente mit dem ThemeProvider
In diesem letzten Schritt lernst du, wie du die App-Komponente mit dem ThemeProvider umhüllst, um den Themenkontext für die gesamte Anwendung verfügbar zu machen.
Öffne die Datei
src/index.js.Importiere den
ThemeProvideraus der DateiThemeContext.js:import { ThemeProvider } from "./contexts/ThemeContext";Umhülle die
App-Komponente mit demThemeProviderin derReactDOM.render-Funktion:root.render( <React.StrictMode> <ThemeProvider> <App /> </ThemeProvider> </React.StrictMode> );
Jetzt können die App-Komponente und ihre Kindkomponenten den theme- und setTheme-Werte aus dem ThemeContext mithilfe des useContext-Hooks zugreifen.
Nachdem du die Herausforderung abgeschlossen hast, sollte das Ergebnis wie folgt aussehen:

Herzlichen Glückwunsch! Du hast das Projekt abgeschlossen. Du solltest jetzt in der Lage sein, zwischen Licht- und Dunkelmodus zu schalten, indem du die Schaltfläche in der Kartenkomponente klickst.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



