Gestion d'état
Qu'est-ce que la gestion d'état ?
L'état (state) est l'ensemble des données qui décrivent l'apparence et le comportement d'une application à un instant donné : un menu ouvert ou non, ce qu'un utilisateur a saisi dans un formulaire, le contenu d'un panier ou le profil de la personne connectée. La gestion d'état regroupe les méthodes et outils qui servent à stocker ces données, à les modifier de façon prévisible et à les partager entre composants.
Sur une petite page, l'état est trivial. Dans une application web de plusieurs dizaines d'écrans, une mauvaise gestion d'état provoque des données périmées, des bugs difficiles à reproduire et des interfaces lentes.
Les types d'état
- État local : propre à un seul composant, comme la valeur d'un champ ou un interrupteur.
- État partagé : utilisé par plusieurs composants, comme un filtre qui agit sur une liste et sur un compteur.
- État global : nécessaire dans toute l'application, comme l'utilisateur authentifié ou le thème.
- État serveur : données récupérées via une API, qui peuvent devenir obsolètes et demandent du cache et des rechargements.
- État dans l'URL : valeurs conservées dans l'adresse, comme un numéro de page ou une recherche, pour que les vues soient partageables et enregistrables.
Comment ça fonctionne
La plupart des approches suivent la même boucle : l'interface déclenche une action, l'état est mis à jour, puis l'interface se réaffiche à partir du nouvel état. Sous sa forme la plus simple :
const [count, setCount] = useState(0);
<button onClick={() => setCount(count + 1)}>
Cliqué {count} fois
</button>Quand plusieurs composants ont besoin des mêmes données, l'état remonte vers un parent commun ou passe dans un store dédié.
Les approches courantes comparées
| Approche | Atout | Point de vigilance |
|---|---|---|
| État de composant | Simple, intégré au framework | Prop drilling quand il est très partagé |
| Context API | Aucune dépendance supplémentaire | Rendus répétés en cas de mises à jour fréquentes |
| Bibliothèque de store (Redux, Zustand, Pinia) | Prévisible, débogable, évolutif | Code répétitif et courbe d'apprentissage |
| Bibliothèque d'état serveur (TanStack Query) | Cache et rechargement gérés pour vous | Pas conçue pour l'état purement visuel |
Bonnes pratiques
- Garder l'état le plus local possible et ne le remonter que si nécessaire.
- Éviter de dupliquer une même donnée à plusieurs endroits : une seule source de vérité.
- Traiter les données serveur séparément de l'état de l'interface.
- Dériver les valeurs plutôt que les stocker, comme un total calculé à partir des articles du panier.
- Rendre les mises à jour immuables pour suivre et déboguer facilement les changements.
La gestion d'état chez BeBranded
La bonne stratégie d'état dépend du produit, pas d'un effet de mode. Quand nous concevons une application web, nous choisissons l'approche la plus légère qui garde l'interface rapide et les données cohérentes, et nous la documentons pour que votre équipe puisse la maintenir.