Des formulaires interactifs
Fait partie de la section L'essentiel de Next.js du Journey React de Coddy — leçon 30 sur 47.
En HTML pur, l'attribut action d'un formulaire est une URL vers laquelle effectuer une requête POST. Dans Next.js, vous pouvez lui passer une function à la place :
import { addItem } from './actions';
<form action={addItem}>
<input name="text" />
<button type="submit">Add</button>
</form>Lors du submit, React fait trois choses pour vous : il arrête le rechargement de page habituel du navigateur, collecte les champs nommés du form dans un objet FormData, et appelle votre action avec celui-ci.
Remarquez ce qui n'est pas là : pas de onSubmit, pas de event.preventDefault(), aucun état. Et cette page reste un Server Component : l'action est une donnée transmise, pas un gestionnaire d'événements, donc elle franchit la frontière sans problème.
Une chose à prévoir : l'item est sauvegardé, mais la list à l'écran ne changera pas tout de suite. La page est déjà rendue sur le server, et rien ne lui a dit de regarder à nouveau. Dans deux leçons, vous corrigerez cela en une seule ligne.
Défi
DébutantLa liste de courses contient un input et un bouton, mais rien ne les relie au serveur. L'action est déjà écrite pour vous dans app/actions.js.
- Dans
app/page.jsx, importezaddItemdepuis'./actions'. - Enveloppez l'input et le bouton dans un
<form>avecid="add-form". - Attribuez à ce formulaire
action={addItem}.
Laissez le name="text" de l'input tel quel : l'action lit le champ à partir de ce nom.
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