L'API React Context est une fonctionnalité qui vous permet de partager l'état (données) entre plusieurs composants sans transmettre manuellement les accessoires à chaque niveau de l'arborescence des composants. Cela simplifie la gestion de l'état, en particulier dans les grandes applications où de nombreux composants doivent accéder aux mêmes données.
Concepts clés :
-
Création de contexte :
Vous créez un contexte en utilisant React.createContext().
const MyContext = React.createContext();
Copier après la connexion
-
Fournisseur :
Le composant fournisseur est utilisé pour envelopper la partie de votre application où vous souhaitez que le contexte soit accessible. Il transmet la valeur du contexte à ses enfants.
<MyContext.Provider value={someValue}>
{children}
</MyContext.Provider>
Copier après la connexion
-
Consommateur :
Les composants qui ont besoin d'accéder au contexte peuvent utiliser le hook Context.Consumer ou useContext (plus courant dans les composants fonctionnels).
const someValue = useContext(MyContext);
Copier après la connexion
Exemple d'utilisation :
-
Créer un contexte :
const ThemeContext = React.createContext();
Copier après la connexion
-
Fournir le contexte dans un composant parent :
const App = () => {
const theme = 'dark';
return (
<ThemeContext.Provider value={theme}>
<ChildComponent />
</ThemeContext.Provider>
);
};
Copier après la connexion
-
Consommer le contexte dans un composant enfant :
const ChildComponent = () => {
const theme = useContext(ThemeContext);
return <div>Current theme: {theme}</div>;
};
Copier après la connexion
Quand utiliser l'API contextuelle :
-
État global : utile pour le partage de l'état auquel de nombreux composants doivent accéder, tels que le statut d'authentification, les thèmes ou les paramètres de langue.
-
Éviter le perçage des accessoires : Aide à éviter de faire passer les accessoires à travers plusieurs couches de composants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!