useEffect
est un crochet dans React utilisé pour gérer les effets secondaires dans les composants fonctionnels. Les effets secondaires sont des opérations qui affectent quelque chose en dehors de la portée du composant, telles que la récupération des données, la configuration des abonnements ou la modification manuelle du DOM. useEffect
vous permet d'exécuter ces effets secondaires après le rendu, et il peut être utilisé pour synchroniser votre composant avec un système externe.
Pour utiliser useEffect
, vous passez généralement dans une fonction qui inclut le code d'effet latéral. Cette fonction sera appelée après chaque rendu par défaut, mais vous pouvez contrôler lorsqu'il est appelé en passant un tableau de dépendance comme deuxième argument à useEffect
.
Voici un exemple de base de la façon d'utiliser useEffect
:
<code class="javascript">import React, { useEffect, useState } from 'react'; function MyComponent() { const [data, setData] = useState([]); useEffect(() => { // This is the side effect fetch('/api/data') .then(response => response.json()) .then(data => setData(data)); }, []); // Empty dependency array means this effect runs once on mount return ( <div> {data.map(item => ( <div key="{item.id}">{item.name}</div> ))} </div> ); }</code>
Dans cet exemple, useEffect
est utilisée pour récupérer les données d'une API lorsque le composant monte. Le tableau de dépendance vide []
garantit que l'effet ne fonctionne qu'une seule fois, sur le rendu initial.
Vous devez utiliser useEffect
dans vos composants React lorsque vous devez effectuer des opérations qui ne sont pas directement liées au rendu du composant lui-même. Ces opérations comprennent, sans s'y limiter:
useEffect
est particulièrement utile pour exécuter ces opérations après le rendu initial d'un composant ou en réponse à des changements d'état spécifiques. Vous pouvez spécifier quand l'effet doit s'exécuter en passant un tableau de dépendance comme deuxième argument à useEffect
. Par exemple:
[]
. Les effets secondaires courants qui peuvent être gérés avec useEffect
comprennent:
Remplacement des données : vous pouvez utiliser useEffect
pour récupérer les données d'une API ou d'une base de données lorsqu'un composant monte ou lorsque certains accessoires ou l'état changent. Cela garantit que les données de votre composant sont à jour.
<code class="javascript">useEffect(() => { fetchData(); }, [someDependency]);</code>
Configuration des abonnements : Si votre composant doit réagir aux modifications d'une source de données externe, vous pouvez utiliser useEffect
pour configurer des abonnements.
<code class="javascript">useEffect(() => { const subscription = someExternalDataSource.subscribe(handleChange); return () => subscription.unsubscribe(); }, []);</code>
Modification manuelle du DOM : Parfois, vous devrez peut-être interagir directement avec le Dom, par exemple, pour définir l'accent sur un champ de saisie.
<code class="javascript">useEffect(() => { inputRef.current.focus(); }, []);</code>
TIMORES : La configuration et la compensation des minuteries, telles que setTimeout
ou setInterval
, peuvent être gérées avec useEffect
.
<code class="javascript">useEffect(() => { const timer = setTimeout(someFunction, 1000); return () => clearTimeout(timer); }, []);</code>
Assurer un nettoyage approprié avec useEffect
est crucial pour empêcher les fuites de mémoire et les opérations inutiles, en particulier lors des abonnements ou des minuteries. Pour effectuer un nettoyage, vous renvoyez une fonction à partir du rappel useEffect
. Cette fonction de nettoyage sera appelée lorsque le composant est sur le point de déclencher ou avant que l'effet ne soit à nouveau en raison d'un changement de dépendance.
Voici un exemple de la façon de mettre en œuvre le nettoyage:
<code class="javascript">import React, { useEffect, useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); useEffect(() => { const timer = setInterval(() => { setCount(prevCount => prevCount 1); }, 1000); // Cleanup function return () => { clearInterval(timer); }; }, []); // Empty dependency array ensures this effect runs once on mount return ( <div> <h1>Count: {count}</h1> </div> ); }</code>
Dans cet exemple, useEffect
met en place un intervalle qui incrémente un compteur à chaque seconde. La fonction de nettoyage clearInterval(timer)
garantit que l'intervalle est effacé lorsque le composant se déchaîne ou lorsque l'effet est réécrit en raison d'un changement de dépendance. Cela empêche l'intervalle de continuer à fonctionner en arrière-plan, ce qui pourrait provoquer des fuites de mémoire ou un comportement inattendu.
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!