Chapitre 9 — Les props (données entre composants)
Jusqu’ici, votre interface affichait des données “fixes”. Dans ce chapitre, on introduit une notion fondamentale de React : le state . Le state permet de rendre l’interface dynamique : clics, compteurs, affichage conditionnel, formulaires, etc.
Plan du chapitre
1) Qu’est-ce que le state ?
Le state représente des données internes à un composant. Quand le state change, React ré-affiche automatiquement l’interface.
Exemple concret : un compteur. Le nombre affiché dépend du state. Quand on clique sur un bouton, le state change, et l’écran se met à jour.
Règle clé : ne modifiez jamais directement une variable pour l’affichage. Utilisez toujours le state.
2) Le hook useState
React fournit des hooks pour gérer des fonctionnalités.
Le hook de base pour le state s’appelle useState.
import { useState } from "react";
const [count, setCount] = useState(0);
count: la valeur actuellesetCount: la fonction pour modifier la valeur0: la valeur initiale
Quand vous appelez setCount, React met à jour le state
et relance automatiquement le rendu.
3) Exemple : un compteur
import { useState } from "react";
export default function App() {
const [count, setCount] = useState(0);
return (
<div>
<p>Compteur : {count}</p>
<button onClick={() => setCount(count + 1)}>
+1
</button>
</div>
);
}
À chaque clic sur le bouton, le compteur augmente et l’affichage se met à jour.
4) Mettre à jour le state correctement
Le state ne doit jamais être modifié directement.
Mauvaise pratique
count = count + 1; // interdit
Bonne pratique
setCount(count + 1);
Forme “fonction” (plus sûre)
setCount((prev) => prev + 1);
Cette forme est recommandée quand la nouvelle valeur dépend de l’ancienne.
5) State avec objets et tableaux
Objet
const [user, setUser] = useState({ name: "Alice", age: 30 });
setUser({ ...user, age: 31 });
Tableau
const [items, setItems] = useState(["A", "B"]);
setItems([...items, "C"]);
On applique ici le principe d’immutabilité vu au chapitre 5.
6) Affichage conditionnel avec le state
const [isVisible, setIsVisible] = useState(true);
{isVisible && <p>Je suis visible</p>}
Le contenu s’affiche uniquement si isVisible vaut true.
7) Erreurs fréquentes
Le state ne se met pas à jour
Vérifiez que vous utilisez bien la fonction setX
et non une modification directe.
Le composant ne se re-render pas
React re-render uniquement quand le state (ou les props) changent.
8) Résumé
- Le state rend l’interface dynamique
useStateest le hook de base- On met à jour le state avec
setState - Le state peut être un nombre, un objet ou un tableau
9) Exercice pratique
Créez un composant avec :
- Un compteur (+ / -)
- Un bouton pour afficher / cacher un texte
- Un tableau de prénoms ajouté dynamiquement
Prochaine étape : Chapitre 10 — Gérer les événements (onClick, onChange…).