Lors du développement d'applications modernes, en particulier des applications Web, vous devrez souvent gérer des données qui évoluent au fil du temps. Par exemple, si un utilisateur clique sur un bouton, nous pouvons souhaiter mettre à jour l'affichage ou récupérer de nouvelles données sur un serveur. Des hooks comme useState et useEffect nous aident à gérer cela en douceur. Décrivons le fonctionnement de ces concepts et explorons comment les concevoir étape par étape.
Pour rendre ce guide facile à comprendre, nous allons décomposer chaque crochet selon sa logique essentielle et construire à partir de là.
Imaginez que vous ayez une simple application de compteur. Chaque fois que vous appuyez sur un bouton, le nombre augmente de 1. Pour que cela fonctionne, vous devez stocker le décompte actuel quelque part et le mettre à jour à chaque fois que vous cliquez sur le bouton.
useState devrait :
Voici un aperçu de base de la façon dont useState pourrait fonctionner sous le capot :
Définissons une structure simple pour useState :
Voici à quoi pourrait ressembler une version simple de useState :
function useState(initialValue) { // Step 1: Create a variable to hold the current state value let currentState = initialValue; // Step 2: Define a function to update this value function setState(newValue) { // Update the state currentState = newValue; // Simulate a re-render (you’d do this differently in a real application) render(); } // Step 3: Return the state and the function to update it return [currentState, setState]; } // Usage example: const [count, setCount] = useState(0); console.log(count); // Outputs: 0 setCount(1); // Updates state to 1 console.log(count); // Outputs: 1 (in real use, this would trigger re-rendering)
Alors que useState gère les données locales, useEffect nous permet d'effectuer des "effets secondaires", comme récupérer des données ou mettre à jour le titre du document. Un effet secondaire est toute interaction avec le monde extérieur.
useEffect devrait :
Les principales parties de useEffect sont :
Mettez en place une structure simple pour useEffect :
Voici une version de base de useEffect :
let previousDeps; // To store previous dependencies function useEffect(effectFunction, dependencies) { // Step 1: Check if dependencies have changed const hasChanged = dependencies ? !previousDeps || dependencies.some((dep, i) => dep !== previousDeps[i]) : true; // Step 2: Run the effect function if dependencies changed if (hasChanged) { effectFunction(); previousDeps = dependencies; // Update the previous dependencies } } // Usage example: useEffect(() => { console.log("Effect has run!"); // Simulate cleanup if needed return () => console.log("Cleanup effect!"); }, [/* dependencies */]);
Simulons un composant en utilisant à la fois useState et useEffect.
function Component() { // Initialize state with useState const [count, setCount] = useState(0); // Log a message each time count changes with useEffect useEffect(() => { console.log(`Count has changed to: ${count}`); }, [count]); // Re-run effect if count changes // Simulate user interaction setCount(count + 1); }
Dans cet exemple :
La conception de useState et useEffect implique :
Ces hooks vous aident à créer des applications dynamiques et interactives, qu'il s'agisse de simples compteurs, de récupération de données ou de gestion d'état plus complexe. Avec ces bases, vous êtes bien équipé pour créer des applications qui répondent aux actions des utilisateurs et aux modifications de données en temps réel !
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!