Introduction
Dans ce projet, vous allez apprendre à créer une application React qui permet aux utilisateurs de basculer entre le mode clair et le mode sombre. Le projet démontrera l'utilisation de l'API React Context et du hook useContext pour gérer l'état thématique global.
👀 Aperçu

🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment créer un
ThemeContextà l'aide de l'API React Context - Comment utiliser le
ThemeContextdans le composantApppour changer le style global de l'application en fonction du thème - Comment utiliser le
ThemeContextdans le composantCardpour changer les styles des cartes en fonction du thème - Comment envelopper le composant
Appavec leThemeProviderpour rendre le contexte thématique disponible dans toute l'application
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre comment utiliser l'API React Context pour gérer l'état global
- Appliquer le hook
useContextpour accéder aux valeurs du contexte - Implémenter différents styles en fonction du thème actuel
- Basculer le thème et mettre à jour l'état global
Configurer le projet
Dans cette étape, vous allez apprendre à configurer le projet et à installer les dépendances nécessaires.
Ouvrez votre éditeur de code et accédez au répertoire du projet.
├── components
│ └── Card.js
├── contexts
│ └── ThemeContext.js
├── App.css
├── App.js
├── index.css
├── index.js
├── reportWebVitals.js
└── setupTests.js
Description des fichiers :
- Le répertoire
componentscontient tous les fichiers de composants. - Le répertoire
contextscontient le fichierThemeContext.jsqui doit être complété.
Puisque ceci est un projet React, nous devons installer les dépendances en exécutant la commande suivante :
npm install
Après avoir installé les dépendances, suivez ces étapes pour accéder au projet :
- Lancez un serveur local en exécutant la commande suivante dans le terminal :
npm start
- Ouvrez le serveur web sur le côté droit de l'environnement de codage. Vous verrez l'effet statique tel que montré ci-dessous. Actuellement, cliquer sur le bouton "Mode sombre" n'entraîne aucun changement.

Créer le ThemeContext
Dans cette étape, vous allez apprendre à créer le ThemeContext à l'aide de l'API React Context. Suivez les étapes ci-dessous pour compléter cette étape :
Ouvrez le fichier
ThemeContext.jssitué dans le répertoiresrc/contexts.Créez le
ThemeContextà l'aide deReact.createContext():export const ThemeContext = React.createContext();Créez le composant
ThemeProviderqui va envelopper le composantAppet fournir le contexte du thème :export const ThemeProvider = (props) => { const [theme, setTheme] = React.useState("light"); return ( <ThemeContext.Provider value={{ theme, setTheme }}> {props.children} </ThemeContext.Provider> ); };Le composant
ThemeProviderinitialise l'étatthemeà "light" et fournit les valeursthemeetsetThemeau contexte.
Utiliser le ThemeContext dans le composant App
Dans cette étape, vous allez apprendre à utiliser le ThemeContext dans le composant App pour changer le style global de l'application en fonction du thème.
Ouvrez le fichier
src/App.js.Utilisez le hook
useContextpour accéder à la valeurthemeduThemeContext:const { theme } = useContext(ThemeContext);Mettez à jour le JSX du composant
Apppour appliquer différents styles en fonction de la valeurtheme:return ( <div className={theme === "light" ? "app app-light" : "app app-dark"}> <Card></Card> </div> );Les classes
app-lightetapp-darkseront appliquées à l'élémentdivprincipal en fonction de la valeurtheme.
Utiliser le ThemeContext dans le composant Card
Dans cette étape, vous allez apprendre à utiliser le ThemeContext dans le composant Card pour changer les styles des cartes en fonction du thème.
Ouvrez le fichier
src/components/Card.js.Utilisez le hook
useContextpour accéder aux valeursthemeetsetThemeduThemeContext:export const Card = () => { const { theme, setTheme } = useContext(ThemeContext); //... };Implémentez la fonction
handleThemeTogglepour basculer le thème :const handleThemeToggle = (e) => { setTheme(theme === "light" ? "dark" : "light"); };Cette fonction mettra à jour la valeur
themedans leThemeContextlorsque le bouton est cliqué.
Envelopper le composant App avec le ThemeProvider
Dans cette étape finale, vous allez apprendre à envelopper le composant App avec le ThemeProvider pour rendre le contexte du thème disponible dans toute l'application.
Ouvrez le fichier
src/index.js.Importez le
ThemeProviderà partir du fichierThemeContext.js:import { ThemeProvider } from "./contexts/ThemeContext";Enveloppez le composant
Appavec leThemeProviderdans la fonctionReactDOM.render:root.render( <React.StrictMode> <ThemeProvider> <App /> </ThemeProvider> </React.StrictMode> );
Maintenant, le composant App et ses composants enfants peuvent accéder aux valeurs theme et setTheme du ThemeContext à l'aide du hook useContext.
Après avoir terminé le défi, l'effet devrait être le suivant :

Félicitations! Vous avez terminé le projet. Vous devriez maintenant être capable de basculer entre le mode clair et le mode sombre en cliquant sur le bouton dans le composant de carte.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.



