Form Actions: zastępowanie tras API dla mutacji
Połączą Państwo Server Actions bezpośrednio z atrybutem action formularza HTML, aby wykonywać mutacje formularzy bez zbędnego kodu i z pełną rewalidacją.
Form Actions: zastępowanie tras API dla mutacji to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Tradycyjny wzorzec
W tradycyjnych aplikacjach Next.js przesyłanie formularzy wymaga komponentu klienckiego z procedurą obsługi onSubmit, która wywołuje fetch(), aby wysłać dane metodą POST do trasy API. Ten wzorzec działa, ale wymaga osobnego napisania i utrzymywania zarówno logiki fetch po stronie klienta, jak i procedury obsługi trasy po stronie serwera.
Server Actions upraszczają formularze
W przypadku Server Actions wywołanie fetch i trasę API zastępuje jedna funkcja. Element formularza otrzymuje Server Action jako swój prop action: <form action={serverAction}>. React przechwytuje przesłanie formularza i automatycznie wywołuje akcję z danymi formularza.
Dostęp do pól formularza za pomocą FormData
Server Action automatycznie otrzymuje obiekt FormData jako argument, gdy zostanie uruchomiona przez formularz. Poszczególne pola można odczytywać za pomocą formData.get('email'), które zwraca wartość jako ciąg znaków. Dostępne są wszystkie standardowe metody FormData, w tym getAll() do obsługi pól wielokrotnego wyboru.
Zwracanie wyników z akcji
Server Action może zwrócić wartość, którą można serializować i którą klient może wykorzystać. Zwrócenie obiektu błędu, takiego jak { error: 'Email already exists' }, albo flagi powodzenia, takiej jak { success: true }, pozwala klientowi odpowiednio zaktualizować interfejs bez pełnego przeładowania strony.
Komponenty stron pozostają proste
Ponieważ akcją formularza jest Server Action, komponent strony zawierający formularz nie musi być Client Component. Serwer renderuje formularz jako statyczny kod HTML, a tylko elementy interaktywne, takie jak wyświetlanie błędów, wymagają JavaScriptu po stronie klienta. Znacznie zmniejsza to rozmiar bundla klienckiego.
Wbudowane progresywne ulepszanie
Formularz z action={serverAction} działa bez włączonego JavaScriptu. Przeglądarka wykonuje standardowe przesłanie formularza HTML metodą POST, serwer wykonuje akcję, a następnie zwraca zaktualizowaną stronę. To prawdziwe progresywne ulepszanie sprawia, że formularz działa poprawnie w każdym środowisku, nawet przy ograniczonej funkcjonalności.
Ponowna walidacja danych po mutacji
Po tym, jak Server Action zmodyfikuje dane, dane stron przechowywane w pamięci podręcznej muszą zostać odświeżone. Wywołanie revalidatePath('/dashboard') wewnątrz akcji unieważnia pamięć podręczną Next.js dla tej ścieżki, dzięki czemu następne żądanie pobierze aktualne dane. Jest to standardowy sposób na utrzymywanie aktualności stron renderowanych po stronie serwera po wykonaniu mutacji.
Precyzyjne unieważnianie pamięci podręcznej
revalidateTag('user-data') zapewnia bardziej precyzyjne unieważnianie pamięci podręcznej niż revalidatePath. Wywołania fetch oznacza się tagami za pomocą next: { tags: ['user-data'] }, a następnie z poziomu Server Action unieważnia się jednocześnie wszystkie dane opatrzone tym tagiem, niezależnie od tego, na jakich ścieżkach są wyświetlane.
Przekierowanie po wykonaniu akcji
Server Actions mogą przekierować użytkownika na nową stronę po pomyślnej mutacji przez wywołanie redirect('/success') z modułu next/navigation. To przekierowanie jest obsługiwane po stronie serwera, dzięki czemu przeglądarka otrzymuje prawidłową odpowiedź nawigacji zamiast przekierowania po stronie klienta.
Mutacje niezwiązane z formularzem za pomocą startTransition
Server Actions nie ograniczają się do przesyłania formularzy. W przypadku kliknięć przycisków i innych wyzwalaczy niezwiązanych z formularzem należy opakować wywołanie akcji w startTransition(() => action(arg)). Oznacza to nawigację jako przejście, dzięki czemu React może pozostawić bieżący interfejs widoczny podczas wykonywania akcji na serwerze.
Walidacja wewnątrz akcji
Server Actions są właściwym miejscem do przeprowadzania walidacji po stronie serwera. Należy zwalidować pola FormData, zwrócić błędy walidacji w razie niepowodzenia i wykonać mutację dopiero wtedy, gdy wszystkie pola są poprawne. Biblioteki takie jak Zod dobrze się tu sprawdzają: można przeanalizować FormData zgodnie ze schematem typów i w razie niepowodzenia zwrócić mapę błędów.
Pytanie dotyczące FormData
Co Server Action otrzymuje jako argument po uruchomieniu przez przesłanie formularza?
Podsumowanie lekcji
Server Actions zastępują wzorzec fetch + trasa API w przypadku mutacji wykonywanych przez formularze. Prop formularza action przyjmuje bezpośrednio Server Action, która otrzymuje obiekt FormData. Akcje zwracają wyniki możliwe do serializowania, aby umożliwić aktualizowanie interfejsu klienta, obsługują revalidatePath i revalidateTag do unieważniania pamięci podręcznej oraz działają progresywnie bez JavaScriptu.
Ucz się React dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 88
- Lekcje
- 324
Często zadawane pytania
Czy lekcja „Form Actions: zastępowanie tras API dla mutacji” jest bezpłatna?
Tak — pełny tekst „Form Actions: zastępowanie tras API dla mutacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Form Actions: zastępowanie tras API dla mutacji”?
Połączą Państwo Server Actions bezpośrednio z atrybutem action formularza HTML, aby wykonywać mutacje formularzy bez zbędnego kodu i z pełną rewalidacją. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Form Actions: zastępowanie tras API dla mutacji”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Server Actions w React 19 i Next.js
- Form Actions: zastępowanie tras API dla mutacji
- useActionState i useFormStatus
- Progresywne ulepszanie za pomocą Server Actions