Lire les données d'un formulaire
Fait partie de la section L'essentiel de Next.js du Journey React de Coddy — leçon 31 sur 47.
Votre action reçoit un argument : un objet FormData. Il s'agit d'un objet intégré au navigateur, et vous n'avez besoin que d'une seule de ses méthodes :
export async function addNote(formData) {
const text = formData.get('text');
const author = formData.get('author');
saveNote(text, author);
}La chaîne que vous passez à get() n'est pas l'id de l'élément input, ni son libellé. Il s'agit de l'attribut name :
<input name="author" /> → formData.get('author')Un input sans name est invisible pour le formulaire. Il s'affiche, vous pouvez y écrire, et sa valeur n'arrive simplement jamais : formData.get() renvoie null. C'est le bug le plus courant dans un premier formulaire d'action server, et il échoue en silence.
get() retourne toujours une chaîne de caractères (ou null), donc un champ numérique doit être converti :
const quantity = Number(formData.get('quantity'));Défi
FacileLe formulaire de notes est relié, mais rien d'utile n'est enregistré : les champs input n'ont pas de name, et l'action enregistre deux chaînes vides.
- Dans
app/page.jsx, ajoutezname="text"au premier champinputetname="author"au second. - Dans
app/actions.js, lisez les deux champs depuisformDataau lieu d'utiliser les chaînes vides.
Conservez les identifiants tels quels et conservez l'appel saveNote(text, author) : seules les deux valeurs situées au-dessus doivent changer.
Essayez vous-même
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de L'essentiel de Next.js
1Pourquoi Next.js
Ce que Next.js apporteLe dossier AppVotre première pageRécapitulatif : Pourquoi Next.js2Routage et liens
Les dossiers sont des routesRoutes imbriquéesLier des pagesRoutes dynamiquesPages non trouvéesRécapitulatif : Routage3Mises en page et métadonnées
La mise en page racineNavigation partagéeMises en page imbriquéesMétadonnées de pageMétadonnées dynamiquesRécapitulatif : Mises en page6Server Actions
Qu'est-ce qu'une Server ActionDes formulaires interactifsLire les données d'un formulaireActualiser la pageRécapitulatif : Server Actions