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

Exemple
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

Exemple
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 ; AbortController peut, lui, annuler une requête fetch.
  • ◆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.