Odczytywanie danych formularza
Część sekcji Podstawy Next.js ścieżki React w Coddy. Lekcja 31 z 47.
Twoje działanie otrzymuje jeden argument: obiekt FormData. Jest wbudowany w przeglądarkę i potrzebujesz z niego tylko jednej metody:
export async function addNote(formData) {
const text = formData.get('text');
const author = formData.get('author');
saveNote(text, author);
}Ciąg znaków, który przekazujesz do get(), nie jest wartością id pola ani jego etykietą. Jest to atrybut name:
<input name="author" /> → formData.get('author')Pole wejściowe bez name jest niewidoczne dla formularza. Jest wyświetlane, możesz w nim pisać, ale jego wartość po prostu nigdy nie dociera: formData.get() zwraca null. To najczęstszy błąd w pierwszym formularzu z akcją serwera i nie sygnalizuje go żaden komunikat.
get() zawsze zwraca ciąg znaków (lub null), więc pole liczbowe wymaga konwersji:
const quantity = Number(formData.get('quantity'));Wyzwanie
ŁatwyFormularz notatek jest już skonfigurowany, ale nie zapisuje niczego przydatnego: pola wejściowe nie mają atrybutu name, a akcja zapisuje dwa puste ciągi znaków.
- W
app/page.jsxdodajname="text"do pierwszego pola wejściowego, aname="author"do drugiego. - W
app/actions.jsodczytaj oba pola zformDatazamiast używać pustych ciągów znaków.
Pozostaw identyfikatory bez zmian i zachowaj wywołanie saveNote(text, author): zmieniają się tylko dwie wartości powyżej niego.
Spróbuj swoich sił
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy Next.js
4Serwer i klient
Dwa rodzaje komponentówOdczytywanie błęduLinia „use client”Ograniczaj części klienckieSerwer wewnątrz klientaPodsumowanie: serwer i klient7Nawigacja po stronie klienta
Aktywny linkRouting programowyFiltrowanie za pomocą URLObsługa trasPodsumowanie: nawigacja2Routing i linki
Foldery to ścieżkiZagnieżdżone ścieżkiŁączenie stronDynamiczne ścieżkiStrony nie znalezionoPodsumowanie: routing3Układy i metadane
Układ głównyWspólna nawigacjaZagnieżdżone układyMetadane stronyDynamiczne metadanePodsumowanie: układy6Akcje serwerowe
Czym jest akcja serwerowaFormularze, które działająOdczytywanie danych formularzaOdświeżanie stronyPodsumowanie: akcje serwerowe