Leggere i dati dei moduli
Fa parte della sezione Nozioni essenziali di Next.js del percorso React di Coddy. Lezione 31 di 47.
La tua azione riceve un argomento: un oggetto FormData. È integrato nel browser e ti serve un solo metodo:
export async function addNote(formData) {
const text = formData.get('text');
const author = formData.get('author');
saveNote(text, author);
}La stringa che passi a get() non è l'id dell'input, né la sua etichetta. È l'attributo name:
<input name="author" /> → formData.get('author')Un input senza name è invisibile al modulo. Viene visualizzato, puoi scriverci e il suo valore semplicemente non arriva mai: formData.get() restituisce null. Questo è il bug più comune nei primi moduli con azioni server e si verifica senza alcun avviso.
get() restituisce sempre una stringa (o null), quindi un campo numerico deve essere convertito:
const quantity = Number(formData.get('quantity'));Sfida
FacileIl modulo delle note è configurato, ma non viene salvato nulla di utile: agli input manca name e l’azione salva due stringhe vuote.
- In
app/page.jsx, aggiunginame="text"al primo input ename="author"al secondo. - In
app/actions.js, leggi entrambi i campi daformDatainvece di usare le stringhe vuote.
Mantieni gli id così come sono e mantieni la chiamata saveNote(text, author): cambia solo i due valori sopra di essa.
Provalo tu
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Nozioni essenziali di Next.js
4Server e Client
Due tipi di componentiLeggere l'erroreLa riga 'use client'Mantieni piccole le parti ClientServer dentro ClientRiepilogo: Server e Client7Navigazione lato client
Il link attivoRouting programmaticoFiltrare con l'URLGestori delle routeRiepilogo: navigazione2Routing e collegamenti
Le cartelle sono routeRoute annidateCollegare le pagineRoute dinamichePagine non trovateRiepilogo: routing5Dati sul server
Componenti asincroniIn attesa dei parametri della routeDue fetch contemporaneiStati di caricamentoGestione degli erroriRiepilogo: recupero dei dati8Progetto: Coddy Eats
Passaggio 1: La struttura3Layout e metadati
Il layout principaleNavigazione condivisaLayout nidificatiMetadati della paginaMetadati dinamiciRiepilogo: layout6Azioni server
Che cos'è un'azione serverModuli che agisconoLeggere i dati dei moduliAggiornare la paginaRiepilogo: azioni server