UseContext
useContext est un Hooks (React) de React, qui permet de consommer des données provenant d'un contexte spécifique. Ceci est particulièrement utile pour accéder à des données partagées à travers plusieurs composants (components, React), sans avoir besoin de les passer explicitement à chaque niveau de l'arborescence des composants via les props (React).
Imaginons que tu aies un thème (comme un mode sombre ou clair) que tu souhaites utiliser dans plusieurs composants. Plutôt que de passer le thème comme prop à chaque composant, tu peux utiliser un contexte pour le rendre disponible globalement.
Voici les étapes pour utiliser useContext:
-
Création d'un Contexte: Tu définis un contexte en utilisant la fonction
createContext()de React. Elle retourne un objet contexte avec deux composants:ProvideretConsumer. LeProviderest utilisé pour encapsuler une arborescence de composants à laquelle tu veux donner accès aux données du contexte. -
Fournir le Contexte: Tu utilises le composant
Providerpour englober les composants qui doivent accéder aux données du contexte. LeProvideraccepte une propvaluequi est les données que tu veux partager. -
Consommer le Contexte: Avec
useContext, tu peux consommer le contexte directement dans n'importe quel composant enfant sans avoir besoin de le recevoir explicitement via les props. Tu passes simplement l'objet contexte àuseContextet il te retourne la valeur actuelle du contexte.
Voici un exemple en TypeScript :
import React, { useContext, createContext, useState } from 'react';
// Création du contexte
const ThemeContext = createContext('light'); // Valeur par défaut
// Composant qui définit la valeur du contexte
const ThemeProvider: React.FC = ({ children }) => {
const [theme, setTheme] = useState('dark'); // Juste pour l'exemple, on démarre avec le thème 'dark'
return (
<ThemeContext.Provider value={theme}>
{children}
</ThemeContext.Provider>
);
};
// Composant qui consomme la valeur du contexte
const ThemedButton: React.FC = () => {
const theme = useContext(ThemeContext); // Accès au contexte
return <button style={{ background: theme === 'dark' ? 'black' : 'white', color: theme === 'dark' ? 'white' : 'black' }}>Click me!</button>;
};
// App Component
const App: React.FC = () => {
return (
<ThemeProvider>
<ThemedButton />
</ThemeProvider>
);
};
export default App;
Dans cet exemple, ThemedButton a accès à la valeur du thème actuel sans que nous ayons besoin de le passer explicitement à travers l'arborescence des composants. Cela simplifie grandement la gestion des données partagées à travers différents composants et réduit le "props drilling" (le passage répétitif de props à travers plusieurs niveaux de composants).
Pour aller plus loin dans ta compréhension de React et des concepts avancés de programmation web, voici une liste de notions que tu pourrais explorer :
-
Hooks personnalisés : Apprends à créer tes propres hooks pour encapsuler la logique réutilisable dans tes applications React.
-
Gestion du state avec Redux ou MobX : Explore ces bibliothèques pour gérer l'état dans de grandes applications React.
-
React Router : Découvre comment gérer la navigation dans tes applications React avec cette bibliothèque de routage.
-
React-Suspense et lazy loading : Utilise
React.SuspenseetReact.lazypour le chargement paresseux de composants et la gestion élégante des états de chargement. -
Contexte Avancé : Exploite davantage le contexte pour gérer des états globaux et des thèmes sans recourir à des bibliothèques externes.
-
Concurrent Mode : Comprends les avantages du mode concurrent de React, qui permet à React de préparer plusieurs versions de l'interface utilisateur en arrière-plan.
-
Server-Side Rendering (SSR) avec Next.js : Apprends comment générer des applications React côté serveur pour améliorer les performances et le SEO.
-
Tests unitaires et Tests d'intégration : Maîtrise les tests avec Jest et react-testing-library pour assurer la fiabilité de ton code.
-
Optimisation des performances : Apprends à utiliser les outils comme React Profiler et techniques comme la Memoization (React) pour optimiser les performances de tes applications.
-
TypeScript avec React : Renforce la robustesse de tes applications React en utilisant TypeScript pour ajouter des types statiques.
-
Animations avec React Spring ou Framer Motion : Intègre des animations fluides et naturelles dans tes applications React.
-
Progressive Web Apps : Transforme tes applications React en PWAs pour améliorer l'expérience utilisateur avec des fonctionnalités comme le fonctionnement hors ligne.
-
Accessibilité (a11y) : Assure-toi que tes applications sont accessibles à tous les utilisateurs en suivant les meilleures pratiques d'accessibilité.
Chacune de ces notions peut t'aider à construire des applications plus robustes, performantes et maintenables.
