Web et frontend · Avancé

Gestion de l'état dans une application web

En une ligne : La plupart de ce qu'on appelle état est de la donnée serveur stockée au mauvais endroit — séparez-les et la moitié de la complexité disparaît.

Quatre types d'état

Données serveur. Listes, éléments, profil. Ce sont des copies d'une source de vérité distante qui nécessitent un traitement de cache : chargement, rafraîchissement, expiration.

État d'interface. Un panneau ouvert, un onglet sélectionné, du texte tapé. Vit dans le composant, meurt avec lui.

État d'adresse. Filtre, pagination, recherche. Sa place est dans l'URL — pour pouvoir le partager et y revenir.

Vrai état global. Utilisateur connecté, thème, langue. Très peu de choses.

L'erreur courante

Tout mettre dans un seul store global. Le résultat : chaque écran dépend de chaque écran, les données vieillissent sans que personne ne s'en rende compte, et des bugs qui n'apparaissent que quand on atteint un écran dans un certain ordre.

En séparant, la plupart du code global s'évapore. Ce qui reste est petit et facile à comprendre.

Ce qui nécessite un traitement explicite

Les états de chargement et d'erreur pour chaque récupération, la prévention des requêtes périmées qui reviennent après une plus récente, et les mises à jour optimistes qui savent comment annuler quand le serveur a refusé.

Pour aller plus loin

Définissez une politique de fraîcheur par type de donnée — combien de temps une copie est considérée valide et quand rafraîchir en arrière-plan. Sans politique explicite, chaque écran en invente une, et alors « pourquoi ça ne se met pas à jour » devient un bug éternel.