Section courante

A propos

Section administrative du site

useReducer

Utilise le réducteur
React

Syntaxe

const [state, dispatch] = useReducer(reducer, initialArg, init?)

useReducer est un crochet React vous permettant d'ajouter un réducteur à votre composante.

Référence

useReducer(reducer, initialArg, init?)

Appelez useReducer au niveau supérieur de votre composant pour gérer son état avec un réducteur.

  1. import { useReducer } from 'react';
  2.  
  3. function reducer(state, action) {
  4.   // ...
  5. }
  6.  
  7. function MyComponent() {
  8.   const [state, dispatch] = useReducer(reducer, { age: 42 });
  9.   // ...

Paramètres

Nom Description
reducer Fonction de réduction spécifiant la mise à jour de l'état. Elle doit être pure, prendre l'état et l'action comme arguments et renvoyer l'état suivant. L'état et l'action peuvent être de n'importe quel type.
initialArg Valeur à partir de laquelle l'état initial est calculé. Il peut s'agir d'une valeur de n'importe quel type. Le calcul de l'état initial dépend du paramètre init suivant.
init facultatif : Fonction d'initialisation renvoyant l'état initial. Si elle n'est pas spécifiée, l'état initial est défini sur initialArg. Sinon, l'état initial est défini sur le résultat de l'appel à init(initialArg).

Renvoie

useReducer renvoie un tableau contenant exactement deux valeurs :

Mises en garde

useReducer est un crochet ; vous ne pouvez donc l'appeler qu'au niveau supérieur de votre composant ou de vos propres crochets. Vous ne pouvez pas l'appeler à l'intérieur de boucles ou de conditions. Si nécessaire, extrayez une nouvelle composante et déplacez-y l'état.

La fonction dispatch possède une identité stable ; vous la verrez donc souvent omise des dépendances d'effets, mais son inclusion ne déclenchera pas l'effet. Si le linter vous permet d'omettre une dépendance sans erreur, vous pouvez le faire en toute sécurité. En savoir plus sur la suppression des dépendances d'effets.

En mode strict, React appellera votre réducteur et votre initialiseur deux fois afin de vous aider à détecter les impuretés accidentelles. Ce comportement est réservé au développement et n'affecte pas la production. Si votre réducteur et votre initialiseur sont purs (comme ils devraient l'être), cela ne devrait pas affecter votre logique. Le résultat de l'un des appels est ignoré.

Fonction dispatch

La fonction dispatch renvoyée par useReducer vous permet de mettre à jour l'état avec une valeur différente et de déclencher un nouveau rendu. Vous devez passer l'action comme seul paramètre à la fonction de répartition :

  1. const [state, dispatch] = useReducer(reducer, { age: 42 });
  2.  
  3. function handleClick() {
  4.   dispatch({ type: 'incremented_age' });
  5.   // ...

React définira l'état suivant sur le résultat de l'appel de la fonction de réduction fournie avec l'état actuel et l'action transmise à dispatch.

Paramètres

Nom Description
action L'action effectuée par l'utilisateur. Il peut s'agir d'une valeur de n'importe quel type. Par convention, une action est généralement un objet identifié par une propriété de type et, éventuellement, par d'autres propriétés contenant des informations supplémentaires.

Renvois

Les fonctions dispatch n'ont pas de valeur de retour.

Mises en garde

Utilisation

  1. import { useReducer } from 'react';
  2.  
  3. function reducer(state, action) {
  4.   // ...
  5. }
  6.  
  7. function MyComponent() {
  8.   const [state, dispatch] = useReducer(reducer, { age: 42 });
  9.   // ...

useReducer renvoie un tableau contenant exactement deux éléments :

Pour mettre à jour l'affichage à l'écran, appelez dispatch avec un objet représentant l'action de l'utilisateur, appelé action :

  1. function handleClick() {
  2.   dispatch({ type: 'incremented_age' });
  3. }

React transmettra l'état actuel et l'action à votre fonction de réduction. Votre réducteur calculera et renverra l'état suivant. React entreposera cet état, affichera votre composant avec et mettra à jour l'interface utilisateur.



Dernière mise à jour : Mercredi, le 10 septembre 2025