Le hook useEffect permet d''exécuter du code après le rendu : appels API, abonnements, timers, manipulation DOM...
import { useEffect, useState } from 'react';
function Profil() {
const [user, setUser] = useState(null);
useEffect(() => {
// S''exécute après le rendu
fetch('/api/user/1')
.then(r => r.json())
.then(data => setUser(data));
}, []); // [] = exécuter UNE SEULE FOIS au montage
if (!user) return <p>Chargement...</p>;
return <h1>{user.nom}</h1>;
}
| Tableau | Quand s''exécute |
|---|---|
| (omis) | Après chaque rendu (rare) |
| [] | Une seule fois au montage |
| [user, page] | Quand user OU page change |
useEffect(() => {
const timer = setInterval(() => console.log('tick'), 1000);
return () => clearInterval(timer); // cleanup au démontage
}, []);
⚠️ Boucle infinie : ne jamais setState sans dépendance contrôlée. ⚠️ Race condition sur les fetch : utiliser un flag isMounted ou AbortController.Avec ces 6 chapitres vous avez les bases solides de React. Pour aller plus loin :