Section courante

A propos

Section administrative du site

useActionState

Utilise un état d'action
React

Syntaxe

const [state, formAction, isPending] = useActionState(fn, initialState, permalink?);

Description

useActionState est un crochet permettant de mettre à jour l'état en fonction du résultat d'une action sur un formulaire.

Remarque

Référence

useActionState(action, initialState, permalink?)

Appelez la fonction useActionState au niveau principal de votre composante pour créer un état de composante étant mis à jour lors de l'exécution d'une action du formulaire. Vous devez passer à useActionState une fonction d'action de formulaire existante ainsi qu'un état initial. La fonction retournera alors une nouvelle action à utiliser dans votre formulaire, ainsi que le dernier état du formulaire et l'état de l'action (en cours ou terminée). Le dernier état du formulaire sera également transmis à la fonction que vous avez fournie.

  1. import { useActionState } from "react";
  2.  
  3. async function increment(previousState, formData) {
  4.   return previousState + 1;
  5. }
  6.  
  7. function StatefulForm({}) {
  8.   const [state, formAction] = useActionState(increment, 0);
  9.   return (
  10.     <form>
  11.       {state}
  12.       <button formAction={formAction}>Incrémentation</button>
  13.     </form>
  14.   )
  15. }

L'état du formulaire correspond à la valeur renvoyée par l'action lors de la dernière soumission. Si le formulaire n'a pas encore été soumis, il correspond à l'état initial que vous avez défini.

Lorsqu'il est utilisé avec une fonction serveur, useActionState permet d'afficher la réponse du serveur suite à la soumission du formulaire, même avant la finalisation du chargement de la page.

Consultez les exemples ci-dessous pour plus d'informations.

Paramètres

Nom Description
fn Cette fonction sera appelée lors de la soumission du formulaire ou du clic sur le bouton. Lors de son appel, elle recevra en premier argument l'état précédent du formulaire (initialement l'état initial que vous avez défini, puis la valeur de retour précédente), suivi des arguments habituels d'une action de formulaire.
initialState Valeur initiale que vous souhaitez attribuer à l'état. Il peut s'agir de n'importe quelle valeur sérialisable. Cet argument est ignoré après le premier appel de l'action.
permalink Une chaîne de caractères contenant l'URL unique de la page modifiée par ce formulaire. À utiliser sur les pages à contenu dynamique (par exemple, les flux de données) en complément de la technique de « progressive enhancement » : si la fonction « fn » est une fonction serveur et que le formulaire est soumis avant le chargement du script JavaScript, le navigateur redirigera l'utilisateur vers l'URL permanente spécifiée, et non vers l'URL de la page actuelle. Assurez-vous que le même composant de formulaire soit affiché sur la page de destination (avec la même fonction « action » et la même URL permanente) afin que React puisse gérer correctement le passage de l'état. Une fois le formulaire initialisé, ce paramètre n'a plus d'effet.

Valeur de retour

La fonction useActionState renvoie un tableau contenant les éléments suivants :

Remarques

Utilisation

Utilisation des informations renvoyées par une action de formulaire.

Appelez la fonction `useActionState` au niveau supérieur de votre composante pour accéder à la valeur de retour de l'action lors du dernier envoi du formulaire.

  1. import { useActionState } from 'react';
  2. import { action } from './actions.js';
  3.  
  4. function MyComponent() {
  5.   const [state, formAction] = useActionState(action, null);
  6.   // ...
  7.   return (
  8.     <form action={formAction}>
  9.       {/* ... */}
  10.     </form>
  11.   );
  12. }

La fonction useActionState renvoie un tableau contenant les éléments suivants :

Lors de la soumission du formulaire, la fonction d'action que vous avez définie sera appelée. Sa valeur de retour deviendra le nouvel état actuel du formulaire.

Cette fonction recevra également un nouveau paramètre : l'état actuel du formulaire. Lors de la première soumission, ce paramètre correspondra à l'état initial que vous avez défini ; pour les soumissions suivantes, il correspondra à la valeur de retour de l'appel précédent de la fonction. Les autres arguments restent inchangés, comme si la fonction `useActionState` n'avait pas été utilisée.

  1. function action(currentState, formData) {
  2.   // ...
  3.   return 'état suivant';
  4. }


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