reactjs / reactjs/react.dev

[Bug]: Example given in "Handling return values in forms" section for "use-server" docs fails to compile

Ouverte
#7,167 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug: unconfirmed
Langage dominant
JavaScript
Étoiles
11.8k
Forks
7.9k
Merge moyen
1 j 11 h
PR mergées (30 j)
11

Description

Summary

The following example is given in Handling return values in forms section for "use server" docs, fails to compile.

// requestUsername.js
'use server';

export default async function requestUsername(formData) {
  const username = formData.get('username');
  // ..
}
// UsernameForm.js
'use client';

import { useActionState } from 'react';
import requestUsername from './requestUsername';

function UsernameForm() {
  const [state, action] = useActionState(requestUsername, null, 'n/a');
  // ..
}
Page

https://react.dev/reference/rsc/use-server#handling-return-values

Details

It fails to compile because, as per the useActionState docs,

useActionState(action, initialState, permalink?)

the "action" (requestUsername in this case) should have previousState as the first argument,
and formData as the second argument.

However, for the above example, the requestUsername action has formData as the first argument,
rather than previousState. Therefore, it fails to compile.

The following is the correct way mentioned in the useActionState docs:

async function increment(previousState, formData) {
  return previousState + 1;
}

function StatefulForm({}) {
  const [state, formAction] = useActionState(increment, 0);
  // ..
}

I can raise a PR for the fix, if it's okay.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la section liée « Handling return values in forms » de la page use-server et comparez son exemple useActionState avec la documentation useActionState liée. Mettez à jour l’exemple requestUsername afin que ses arguments correspondent à la signature d’action documentée, puis vérifiez que l’exemple de la documentation se compile.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, react
Domaine
documentation
Type d'issue
Documentation
Difficulté
1/5
Temps estimé
Moins d'une heure
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.