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
Intermédiaire · 9 min de lecture
L'état et les événements
Une interface qui réagit
1Définition
L'état (useState) est une valeur qui survit aux rendus ; la remplacer avec son setter déclenche un nouveau rendu. On garde l'état minimal, on calcule le reste, et l'on ne le modifie jamais : on le remplace par une nouvelle valeur.
2Principes fondamentaux
01
useState pour ce qui change
Une variable ordinaire est oubliée à chaque rendu.
02
Mise à jour fonctionnelle
setN((n) => n + 1) part de la dernière valeur.
03
État minimal
Ce qui se calcule ne se stocke pas.
04
Jamais de mutation
[...liste, x], { ...objet, cle: v }.
3Exemples pratiques
Retirer et modifier dans une liste
1setPanier((p) => p.filter((a) => a.id !== id));2setTaches((t) => t.map((x) => (x.id === id ? { ...x, faite: true } : x)));filter et map créent de nouvelles listes : React voit le changement.
Plusieurs mises à jour d'un coup
1setN((n) => n + 1);2setN((n) => n + 1); // +2 au totalAvec la forme fonctionnelle, chaque mise à jour part de la précédente.
4Erreurs courantes
Une variable let
À éviter
let gemmes = 0; … gemmes += 10;À faire
const [gemmes, setGemmes] = useState(0);Pourquoi : React ne voit pas le changement.
push sur l'état
À éviter
panier.push(a); setPanier(panier);À faire
setPanier((p) => [...p, a]);Pourquoi : Même tableau : React peut ne pas se mettre à jour.
Appeler au lieu de passer
À éviter
onClick={choisir(r)}À faire
onClick={() => choisir(r)}Pourquoi : La fonction s'exécuterait pendant le rendu.
5Subtilités à connaître
- ◆L'état est une photo prise au rendu : juste après
setN(5),nvaut encore l'ancienne valeur dans le même gestionnaire. - ◆React regroupe les mises à jour d'un même événement en un seul rendu.
- ◆Un état dérivé (le total d'un panier) stocké à part finit toujours par se désynchroniser.
6Vérifie ta compréhension
Question 1/3
Score 0
setClics(5) provoque…
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.