Front-end · 6 mondes · 18 étapes
React
Composants, état, effets : des interfaces web qui réagissent, rendues pour de vrai.
Progression
0 %
0/18 étapes terminées
Avancé · 10 min de lecture
Les effets
Synchroniser, puis nettoyer
1Définition
Un effet (useEffect) synchronise un composant avec quelque chose d'extérieur : minuterie, requête, abonnement. Il s'exécute après l'affichage, se relance quand ses dépendances changent, et renvoie un nettoyage appelé avant chaque relance et à la disparition du composant.
2Principes fondamentaux
01
Le rendu reste pur
Les effets vont dans useEffect, pas dans le corps du composant.
02
Des dépendances exactes
Tout ce que l'effet lit et qui peut changer.
03
Toujours nettoyer
clearInterval, clearTimeout, désabonnement, drapeau annule.
04
Trois états de chargement
Chargement, succès, erreur.
3Exemples pratiques
S'abonner à un événement de la fenêtre
1useEffect(() => {2 const surTaille = () => setLargeur(window.innerWidth);3 window.addEventListener("resize", surTaille);4 return () => window.removeEventListener("resize", surTaille);5}, []);Même schéma : on s'abonne, et le nettoyage se désabonne.
Chargement avec une bibliothèque
1const { data, isPending, error } = useQuery({2 queryKey: ["lecons"],3 queryFn: chargerLecons,4});TanStack Query gère le cache, les états et les réponses tardives à votre place.
4Erreurs courantes
Pas de nettoyage
À éviter
useEffect(() => { setInterval(…) }, [actif]);À faire
return () => clearInterval(id);Pourquoi : Les minuteries s'empilent.
Pas de tableau de dépendances
À éviter
useEffect(() => { charger(); });À faire
useEffect(() => { charger(); }, []);Pourquoi : L'effet se relance après chaque rendu : requêtes sans fin.
Un effet pour calculer
À éviter
useEffect(() => setTotal(somme(panier)), [panier]);À faire
const total = somme(panier);Pourquoi : Un rendu de plus pour rien : ce qui se calcule se calcule au rendu.
5Subtilités à connaître
- ◆En développement, React monte, démonte puis remonte chaque composant : un nettoyage incorrect se voit immédiatement.
- ◆Une promesse ne s'annule pas, mais sa réponse peut être ignorée ;
AbortControllerpeut, lui, annuler une requêtefetch. - ◆Beaucoup d'effets sont évitables : « You Might Not Need an Effect » est une lecture recommandée de la documentation React.
6Vérifie ta compréhension
Question 1/3
Score 0
Le nettoyage est appelé…
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.