Maison > Article > interface Web > useContext : réagir aux crochets
Dans React, la gestion des données entre les composants est essentielle, en particulier dans les applications plus volumineuses où plusieurs composants doivent accéder aux mêmes données. Le forage d'accessoires (transmettre des accessoires sur plusieurs niveaux d'une arborescence de composants) peut rapidement devenir fastidieux. C’est là que le hook useContext de React brille. useContext vous permet de partager des données entre composants sans transmettre manuellement d'accessoires, ce qui en fait un outil inestimable pour la gestion de l'état.
Dans cet article, nous commencerons par une explication détaillée de useContext, de sa syntaxe et de ses avantages. Ensuite, nous consoliderons cette compréhension en construisant deux mini-projets :
À la fin de ce didacticiel, vous serez bien équipé pour utiliser useContext en toute confiance dans n'importe quel projet React.
useContext est un hook React qui permet aux composants de s'abonner directement à un contexte. Cela permet d'éviter les tracas liés au perçage d'accessoires en permettant aux composants d'accéder aux données globales du fournisseur le plus proche au-dessus de lui dans l'arborescence des composants.
Voici la syntaxe de base pour créer et utiliser un contexte :
import React, { useContext, createContext } from 'react'; const MyContext = createContext(defaultValue); // Step 1: Create a context function MyComponent() { const contextValue = useContext(MyContext); // Step 2: Use the context return <div>{contextValue}</div>; }
import React, { useContext, createContext } from 'react'; const ThemeContext = createContext('light'); // default theme is light function ThemeProvider({ children }) { return <ThemeContext.Provider value="dark">{children}</ThemeContext.Provider>; } function DisplayTheme() { const theme = useContext(ThemeContext); // Consuming the context return <p>The current theme is {theme}</p>; } function App() { return ( <ThemeProvider> <DisplayTheme /> </ThemeProvider> ); }
Dans cet exemple :
Cela couvre les bases. Passons maintenant aux projets pour appliquer ces connaissances dans des scénarios pratiques.
Notre premier projet est un simple sélecteur de thème qui démontrera comment useContext peut être utilisé pour gérer l'état global des applications pour les thèmes.
import React, { useContext, createContext } from 'react'; const MyContext = createContext(defaultValue); // Step 1: Create a context function MyComponent() { const contextValue = useContext(MyContext); // Step 2: Use the context return <div>{contextValue}</div>; }
Ici, ThemeContext fournit deux valeurs : le thème actuel et une fonction pour le faire basculer. Le fournisseur enveloppe les composants de l'application, rendant le thème et la fonction de bascule disponibles dans le monde entier.
import React, { useContext, createContext } from 'react'; const ThemeContext = createContext('light'); // default theme is light function ThemeProvider({ children }) { return <ThemeContext.Provider value="dark">{children}</ThemeContext.Provider>; } function DisplayTheme() { const theme = useContext(ThemeContext); // Consuming the context return <p>The current theme is {theme}</p>; } function App() { return ( <ThemeProvider> <DisplayTheme /> </ThemeProvider> ); }
import React, { createContext, useContext, useState } from 'react'; const ThemeContext = createContext(); export function ThemeProvider({ children }) { const [theme, setTheme] = useState('light'); const toggleTheme = () => setTheme(theme === 'light' ? 'dark' : 'light'); return ( <ThemeContext.Provider value={{ theme, toggleTheme }}> {children} </ThemeContext.Provider> ); }
Maintenant, vous pouvez basculer entre les thèmes clairs et sombres en cliquant sur le bouton, avec l'état du thème affiché à côté. Ce projet montre comment useContext permet à plusieurs composants de partager et de réagir aux changements d'état globaux.
Pour le deuxième projet, créons une application simple qui suit le statut d'authentification d'un utilisateur à l'aide de useContext.
function ThemeToggler() { const { theme, toggleTheme } = useContext(ThemeContext); // Access context values return ( <button onClick={toggleTheme}> Switch to {theme === 'light' ? 'dark' : 'light'} mode </button> ); } function DisplayTheme() { const { theme } = useContext(ThemeContext); return <p>Current Theme: {theme}</p>; }
function App() { return ( <ThemeProvider> <DisplayTheme /> <ThemeToggler /> </ThemeProvider> ); } export default App;
import React, { createContext, useContext, useState } from 'react'; const AuthContext = createContext(); export function AuthProvider({ children }) { const [isAuthenticated, setIsAuthenticated] = useState(false); const login = () => setIsAuthenticated(true); const logout = () => setIsAuthenticated(false); return ( <AuthContext.Provider value={{ isAuthenticated, login, logout }}> {children} </AuthContext.Provider> ); }
function LoginButton() { const { login } = useContext(AuthContext); // Access login function return <button onClick={login}>Login</button>; } function LogoutButton() { const { logout } = useContext(AuthContext); // Access logout function return <button onClick={logout}>Logout</button>; }
Vous disposez désormais d'une application de statut d'authentification simple dans laquelle les boutons de connexion et de déconnexion mettent à jour le statut de l'utilisateur dans l'application. Ce projet montre comment useContext peut gérer l'état d'une application dans des scénarios réels.
Avec ces deux projets, vous avez vu comment useContext simplifie le partage de données entre les composants sans avoir besoin de percer des accessoires. Les projets de sélecteur de thème et de statut d'authentification donnent des informations pratiques sur la gestion efficace de l'état global. Que vous changiez de thème ou gériez l'authentification des utilisateurs, useContext fournit un outil puissant pour créer des applications efficaces et organisées.
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!