State global

Le state global ou état global est un état centralisé qui stocke les données partagées d’une application et les rend accessibles à n’importe quel composant, quel que soit son niveau dans l’arborescence.

Il s’oppose à l’état local (useState), qui est confiné à un seul composant .

Objectif principal : Éliminer le « prop drilling » (ou passage de propriétés en cascade), c’est-à-dire la pratique fastidieuse qui consiste à transmettre des données de composant en composant, via leurs props, jusqu’à atteindre le composant qui en a réellement besoin .

Pourquoi utiliser un State Global ?

Dans une application React, les données circulent de haut en bas, des composants parents vers les composants enfants . Lorsque plusieurs composants, situés à des endroits différents de l’arborescence, ont besoin des mêmes données (ex: l’utilisateur connecté, les paramètres de l’application, le contenu d’un panier), il devient nécessaire de remonter cet état vers un ancêtre commun, ce qui engendre deux problèmes majeurs :

  1. Prop Drilling : Obligation de passer des données via des composants intermédiaires qui n’en ont pas besoin, rendant le code plus difficile à maintenir et à comprendre .
  2. Complexité accrue : La gestion de l’état devient chaotique lorsque l’application grandit .

Le state global résout ces problèmes en offrant un point d’accès unique et centralisé .

Les principales solutions pour gérer le State Global dans React

Plusieurs outils existent pour implémenter un state global, chacun avec ses spécificités :

SolutionDescriptionCas d’usage
Context APIAPI native de React. Elle permet de créer un contexte qui rend des données disponibles à tous les composants enfants d’un Provider.Projets simples à moyens, partage de données « statiques » (ex: thème, langue, utilisateur).
ReduxBibliothèque externe très populaire, basée sur un store unique et un flux de données unidirectionnel via des actions et des réducteurs.Applications complexes, avec une logique d’état riche et des interactions fréquentes. Offre des outils de débogage puissants .
ZustandBibliothèque externe moderne, légère et intuitive. Elle propose une API simplifiée basée sur des hooks et un store global.Alternative plus légère et plus simple que Redux, idéale pour les projets de taille moyenne.
JotaiAutre bibliothèque moderne, qui adopte une approche atomique : l’état est décomposé en petits atomes indépendants.Projets où l’on souhaite une granularité fine et éviter les re-rendus inutiles.

Comment ça fonctionne concrètement ?

Prenons l’exemple de l’état d’authentification d’un utilisateur :

  1. Sans state global : Vous passez la variable user de App → Layout → Header → Avatar (prop drilling).
  2. Avec state global : Vous stockez user dans un store global. N’importe quel composant (comme Avatar ou ProfilePage) peut accéder directement à user via un hook (comme useSelector ou useStore), sans passer par les composants intermédiaires .

Bonnes pratiques

  • Ne pas tout globaliser : Un state global doit être réservé aux données réellement partagées (ex: authentification, thème, panier). Un état local (useState) reste la solution recommandée pour des données propres à un composant ou à une petite section de l’interface.
  • Choisir l’outil adapté : La Context API est souvent suffisante pour des besoins simples. Redux, Zustand ou Jotai deviennent pertinents lorsque la logique de gestion d’état se complexifie.
  • Organiser son store : Structurer le state global par « slices » (modules) pour faciliter la maintenance et la scalabilité .

Tableau récapitulatif

ConceptDéfinitionAvantage
State GlobalÉtat centralisé accessible à tous les composants.Évite le prop drilling.
Prop DrillingPassage de données via des composants intermédiaires inutiles.Problème résolu par le state global.
Context APISolution native de React pour partager un état global.Légère, sans dépendance externe.
StoreObjet central qui contient l’ensemble du state global.Point d’accès unique et cohérent.
Explorer les thématiques : React
Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.