Form Actions: sostituire le API Routes per le mutazioni
Colleghi direttamente le Server Actions alle action dei moduli HTML per eseguire mutazioni dei moduli senza codice ripetitivo e con una rivalidazione completa.
Form Actions: sostituire le API Routes per le mutazioni è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Il pattern tradizionale
Nelle applicazioni Next.js tradizionali, l'invio dei moduli richiede un componente client con un gestore onSubmit che chiama fetch() per inviare i dati tramite POST a una route API. Questo pattern funziona, ma richiede di scrivere e mantenere separatamente sia la logica fetch lato client sia il gestore della route lato server.
Le Server Actions semplificano i moduli
Con le Server Actions, si sostituiscono la chiamata fetch e la route API con un'unica funzione. All'elemento modulo viene assegnata la Server Action come prop action: <form action={serverAction}>. React intercetta l'invio e chiama automaticamente l'action con i dati del modulo.
Accesso ai campi del modulo con FormData
Quando viene attivata da un modulo, la Server Action riceve automaticamente un oggetto FormData come argomento. È possibile accedere ai singoli campi usando formData.get('email'), che restituisce il valore come stringa. Sono disponibili tutti i metodi standard di FormData, incluso getAll() per i campi con selezione multipla.
Restituzione dei risultati dalle action
Una Server Action può restituire un valore serializzabile che il client può utilizzare. Restituire un oggetto di errore come { error: 'Email already exists' } o un flag di successo come { success: true } consente al client di aggiornare l'interfaccia di conseguenza senza ricaricare completamente la pagina.
I componenti della pagina restano semplici
Poiché l'action del modulo è una Server Action, il componente della pagina che ospita il modulo non deve essere un Client Component. Il server esegue il rendering del modulo come HTML statico e solo le parti interattive, come la visualizzazione degli errori, richiedono JavaScript lato client. Questo riduce notevolmente le dimensioni del bundle client.
Progressive enhancement integrato
Un modulo con action={serverAction} funziona anche senza JavaScript abilitato. Il browser esegue un normale POST di un modulo HTML, il server esegue l'action e restituisce la pagina aggiornata. Questo vero progressive enhancement consente al modulo di funzionare correttamente in qualsiasi ambiente.
Rivalidazione dei dati dopo una mutazione
Dopo che una Server Action ha modificato i dati, i dati memorizzati nella cache della pagina devono essere aggiornati. La chiamata a revalidatePath('/dashboard') all'interno dell'action invalida la cache di Next.js per quel percorso, facendo sì che la richiesta successiva recuperi dati aggiornati. Questo è il modo standard per mantenere aggiornate le pagine renderizzate dal server dopo le mutazioni.
Invalidazione granulare della cache
revalidateTag('user-data') offre un'invalidazione della cache più precisa rispetto a revalidatePath. Si aggiungono tag alle chiamate fetch con next: { tags: ['user-data'] } e poi si invalidano contemporaneamente tutti i dati contrassegnati dall'interno della Server Action, indipendentemente dai percorsi in cui tali dati vengono visualizzati.
Reindirizzamento dopo l'action
Le Server Actions possono reindirizzare l'utente a una nuova pagina dopo una mutazione completata correttamente, chiamando redirect('/success') dal modulo next/navigation. Il reindirizzamento viene gestito lato server, quindi il browser riceve una risposta di navigazione corretta anziché un reindirizzamento lato client.
Mutazioni non basate su moduli con startTransition
Le Server Actions non sono limitate all'invio dei moduli. Per i clic sui pulsanti e altri eventi non associati a un modulo, è necessario racchiudere la chiamata all'action in startTransition(() => action(arg)). In questo modo la navigazione viene contrassegnata come transizione e React può mantenere visibile l'interfaccia corrente mentre l'action viene eseguita sul server.
Validazione all'interno delle action
Le Server Actions sono il posto giusto per la validazione lato server. È necessario validare i campi di FormData, restituire gli errori di validazione in caso di esito negativo e procedere con la mutazione solo se tutti i campi sono validi. Librerie come Zod si integrano bene in questo contesto: è possibile analizzare FormData in base a uno schema tipizzato e restituire la mappa degli errori in caso di fallimento.
Domanda su FormData
Quale argomento riceve una Server Action quando viene attivata dall'invio di un modulo?
Riepilogo della lezione
Le Server Actions sostituiscono il pattern fetch + route API per le mutazioni dei moduli. La prop action del modulo accetta direttamente una Server Action, che riceve un oggetto FormData. Le action restituiscono risultati serializzabili per aggiornare l'interfaccia del client, supportano revalidatePath e revalidateTag per l'invalidazione della cache e funzionano progressivamente anche senza JavaScript.
Domande Frequenti
La lezione «Form Actions: sostituire le API Routes per le mutazioni» è gratuita?
Sì — il testo completo di «Form Actions: sostituire le API Routes per le mutazioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Form Actions: sostituire le API Routes per le mutazioni»?
Colleghi direttamente le Server Actions alle action dei moduli HTML per eseguire mutazioni dei moduli senza codice ripetitivo e con una rivalidazione completa. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Form Actions: sostituire le API Routes per le mutazioni»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Server Actions in React 19 e Next.js
- Form Actions: sostituire le API Routes per le mutazioni
- useActionState e useFormStatus
- Progressive Enhancement con le Server Actions