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

Exemple
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

Exemple
1setN((n) => n + 1);2setN((n) => n + 1);   // +2 au total

Avec 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), n vaut 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.