Gestion de l'état dans une application web
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.