Exercices useEffect
10 exercices pour maîtriser les effets de bord : fetch, timers, écouteurs d'événements et cleanup.
Modifier document.title
Tâche : Utilisez useEffect pour synchroniser document.title avec la valeur d'un compteur — sans tableau de dépendances (s'exécute à chaque rendu).
Effet au montage uniquement
Tâche : Créez un composant qui enregistre l'heure d'arrivée une seule fois — utilisez useEffect(() => { ... }, []) avec le tableau vide.
useEffect avec dépendances
Tâche : Créez une barre de recherche qui filtre des résultats à chaque fois que la query change — useEffect(() => { ... }, [query]).
Cleanup — clearInterval
Tâche : Créez un chronomètre avec setInterval dans useEffect. La fonction de cleanup doit appeler clearInterval pour éviter les fuites mémoire.
Fetch de données
Tâche : Chargez une liste de postes depuis jsonplaceholder.typicode.com/posts?_limit=5 dans useEffect avec []. Gérez le loading et les erreurs.
Horloge temps réel
Tâche : Créez une horloge qui se met à jour chaque seconde avec setInterval + cleanup clearInterval.
EventListener sur window
Tâche : Détectez la taille de la fenêtre avec window.addEventListener('resize', ...) dans useEffect. La cleanup doit appeler removeEventListener.
Loading / erreur complets
Tâche : Créez un composant Utilisateur qui reçoit userId, le fetche, et affiche un état de chargement, d'erreur ou les données selon le cas.
AbortController
Tâche : Utilisez AbortController pour annuler un fetch en cours si le composant se démonte — retournez () => controller.abort() dans la cleanup.
Plusieurs useEffect indépendants
Tâche finale : Créez un Dashboard avec au moins 2 useEffect distincts : un pour le titre de la page, un pour un timer ou un écouteur d'événement réseau.
Passer le QCM R04