Formulaires élémentaires avec des actions serveur
Créez des formulaires interactifs qui envoient directement leurs données au serveur avec les actions serveur de Next.js.
Formulaires élémentaires avec des actions serveur est une leçon Next.js 15 Fullstack (App Router + Server Actions) gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Next.js 15 Fullstack (App Router + Server Actions), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Next.js 15 Fullstack (App Router + Server Actions) comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Intro to Server Actions
Welcome to Server Actions! This powerful Next.js 15 feature allows you to define functions that run directly on the server, callable from your client components.
Think of them as a way to send data to your server without needing to create a separate API route. They simplify data mutations and form submissions.
Why Use Server Actions?
Server Actions offer several key benefits for your Next.js applications:
- Simplified Data Mutations: Directly call server-side code from your forms.
- Reduced Client-Side JS: Less JavaScript needs to be sent to the browser.
- Improved Performance: Actions run closer to your database, potentially reducing latency.
- Automatic Revalidation: They can automatically update cached data after a successful mutation (more on this in a later lesson!).
Defining a Server Action
A Server Action is an async function marked with the "use server" directive. This directive tells Next.js to treat the function as server-only code.
You can define actions directly in your components or in a separate file (e.g., app/actions.js) and import them.
// app/actions.js
"use server";
export async function createItem(formData) {
const itemName = formData.get("itemName");
console.log(`Server received: ${itemName}`);
// In a real app, you'd save 'itemName' to a database
}Connecting Form to Action
To link an HTML <form> element to a Server Action, you simply pass the action function directly to the form's action prop. It's that easy!
When the form is submitted, Next.js automatically invokes the specified Server Action.
// app/page.js
import { createItem } from './actions';
export default function Page() {
return (
<form action={createItem}>
<label htmlFor="item">New Item:</label>
<input type="text" id="item" name="itemName" required />
<button type="submit">Add Item</button>
</form>
);
}Accessing Form Data
When a form submits to a Server Action, the action function automatically receives a FormData object as its first argument.
You can use formData.get('fieldName') to retrieve the value of an input based on its name attribute.
// app/actions.js
"use server";
export async function processForm(formData) {
const username = formData.get("username");
const email = formData.get("email");
const age = formData.get("age");
console.log(`User: ${username}, Email: ${email}, Age: ${age}`);
// Perform server-side logic, e.g., save user to database
}Full Form Example
Let's combine what we've learned into a simple guestbook entry form. The Server Action will log the guest's message.
Remember, this code is for a Next.js environment and isn't runnable as a standalone JS file.
// app/actions.js
"use server";
export async function addGuestbookEntry(formData) {
const message = formData.get("message");
console.log(`New guestbook entry: ${message}`);
// In a real app, save to DB and revalidate cache
}
// app/page.js
import { addGuestbookEntry } from './actions';
export default function GuestbookPage() {
return (
<div>
<h1>Guestbook</h1>
<form action={addGuestbookEntry}>
<textarea name="message" rows="4" cols="30" placeholder="Your message..." required></textarea>
<button type="submit">Sign Guestbook</button>
</form>
</div>
);
}Handling Multiple Inputs
The FormData object efficiently captures all inputs within your form that have a name attribute. You can access them individually.
formData.get('inputName'): Gets the first value for a given name.formData.getAll('inputName'): Returns an array of all values for inputs with the same name (useful for multiple checkboxes).formData.entries(): Returns an iterator for all key/value pairs.
User Feedback: Loading States
When a form is submitting, it's good practice to provide visual feedback to the user. Next.js, along with React, provides the useFormStatus hook for this.
useFormStatus tells you if the parent <form> is currently submitting, allowing you to disable buttons or show a spinner.
// app/page.js (inside a component, e.g., SubmitButton.js)
import { useFormStatus } from "react-dom";
function SubmitButton() {
const { pending } = useFormStatus(); // Gets status from parent <form>
return (
<button type="submit" disabled={pending}>
{pending ? "Submitting..." : "Submit"}
</button>
);
}
// In your page.js:
// import { addGuestbookEntry } from './actions';
// export default function Page() {
// return (
// <form action={addGuestbookEntry}>
// {/* ... other inputs */}
// <SubmitButton />
// </form>
// );
// }Quick Check
Which statements about basic Next.js Server Action forms are correct?
Recap & Next Steps
Great job! You've learned the fundamentals of creating basic forms with Next.js Server Actions:
- Server Actions are server-side functions marked with
"use server". - They simplify form submissions by allowing you to pass the action directly to a form's
actionprop. - Form data is accessed within the action via a
FormDataobject. - The
useFormStatushook helps implement loading indicators.
Next, we'll dive into how Server Actions can mutate data and automatically revalidate your UI!
Questions Fréquemment Posées
La leçon « Formulaires élémentaires avec des actions serveur » est-elle gratuite ?
Oui — le texte complet de « Formulaires élémentaires avec des actions serveur » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Next.js 15 Fullstack (App Router + Server Actions), passe à CoddyKit PRO. Le cours Next.js 15 Fullstack (App Router + Server Actions) comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Formulaires élémentaires avec des actions serveur » ?
Créez des formulaires interactifs qui envoient directement leurs données au serveur avec les actions serveur de Next.js. Tu pratiques Next.js 15 Fullstack (App Router + Server Actions) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Next.js 15 Fullstack (App Router + Server Actions) ?
Aucune expérience préalable n'est requise. Next.js 15 Fullstack (App Router + Server Actions) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Formulaires élémentaires avec des actions serveur » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Next.js 15 Fullstack (App Router + Server Actions) ?
Oui. Chaque leçon Next.js 15 Fullstack (App Router + Server Actions) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Formulaires élémentaires avec des actions serveur
- Modifier les données et revalider
- Gestion des erreurs dans les actions
- Interface optimiste et états d’attente avec les actions serveur