Skjemaactions: Erstatt API-ruter for mutasjoner
Koble Server Actions direkte til HTML-skjemaactions for mutasjoner uten unødvendig boilerplate og med full revalidering.
Skjemaactions: Erstatt API-ruter for mutasjoner er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.
Det tradisjonelle mønsteret
I tradisjonelle Next.js-applikasjoner krever skjemainnsendinger en klientkomponent med en onSubmit-behandler som bruker fetch() til å sende data med POST til en API-rute. Dette mønsteret fungerer, men krever at du skriver og vedlikeholder både fetch-logikken på klientsiden og rutebehandleren på serversiden separat.
Server Actions forenkler skjemaer
Med Server Actions erstatter du fetch-kallet og API-ruten med én funksjon. Skjemaelementet mottar Server Action-en som sin action-prop: <form action={serverAction}>. React fanger opp innsendingen og kaller actionen automatisk med skjemadataene.
Hente skjemafelt med FormData
Server Action-en mottar automatisk et FormData-objekt som argument når den utløses av et skjema. Du henter enkeltfelter med formData.get('email'), som returnerer verdien som en streng. Alle standardmetodene i FormData er tilgjengelige, inkludert getAll() for felt med flervalg.
Returnere resultater fra Server Actions
En Server Action kan returnere en serialiserbar verdi som klienten kan bruke. Hvis du returnerer et feilobjekt som { error: 'Email already exists' } eller et suksessflagg som { success: true }, kan klienten oppdatere brukergrensesnittet tilsvarende uten å laste inn hele siden på nytt.
Sidekomponenter forblir enkle
Fordi skjemahandlingen er en Server Action, trenger ikke sidekomponenten som inneholder skjemaet å være en klientkomponent. Serveren gjengir skjemaet som statisk HTML, og bare de interaktive delene, for eksempel visning av feil, krever JavaScript på klientsiden. Dette reduserer klientpakken betydelig.
Progressiv forbedring er innebygd
Et skjema med action={serverAction} fungerer uten at JavaScript er aktivert. Nettleseren utfører en standard HTML-POST, serveren kjører actionen, og serveren returnerer den oppdaterte siden. Denne reelle progressive forbedringen gjør at skjemaet fungerer med en god reserve i alle miljøer.
Revalidere data etter mutasjon
Etter at en Server Action har endret data, må bufrede sidedata oppdateres. Hvis du kaller revalidatePath('/dashboard') inne i actionen, blir Next.js-cachen for denne banen ugyldiggjort, slik at neste forespørsel henter ferske data. Dette er standardmåten å holde servergjengitte sider oppdatert etter mutasjoner.
Finkornet ugyldiggjøring av cache
revalidateTag('user-data') gir mer finkornet ugyldiggjøring av cache enn revalidatePath. Du merker fetch-kall med next: { tags: ['user-data'] } og ugyldiggjør deretter alle merkede data samtidig fra Server Action-en, uavhengig av hvilke baner som viser disse dataene.
Omdirigere etter en action
Server Actions kan omdirigere brukeren til en ny side etter en vellykket mutasjon ved å kalle redirect('/success') fra modulen next/navigation. Denne omdirigeringen håndteres på serversiden, slik at nettleseren mottar et riktig navigasjonssvar i stedet for en omdirigering på klientsiden.
Mutasjoner uten skjema med startTransition
Server Actions er ikke begrenset til skjemainnsendinger. For knappetrykk og andre utløsere som ikke er skjemaer pakker du action-kallet inn i startTransition(() => action(arg)). Dette markerer navigasjonen som en overgang, slik at React kan holde det gjeldende brukergrensesnittet synlig mens actionen kjører på serveren.
Validering i Server Actions
Server Actions er det riktige stedet for validering på serversiden. Valider feltene i FormData, returner valideringsfeil hvis de ikke består, og fortsett med mutasjonen først når alle feltene er gyldige. Biblioteker som Zod integreres godt her: bruk parse til å gjøre FormData om til et typeskjema og returner feilkartet ved feil.
Spørsmål om FormData
Hva mottar en Server Action som argument når den utløses av en skjemainnsending?
Oppsummering av leksjonen
Server Actions erstatter fetch + API-rute-mønsteret for skjemamutasjoner. Skjemaets action-prop kan motta en Server Action direkte, og actionen mottar et FormData-objekt. Actions returnerer serialiserbare resultater for oppdateringer av brukergrensesnittet, støtter revalidatePath og revalidateTag for ugyldiggjøring av cache, og fungerer progressivt uten JavaScript.
Lær deg React med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 88
- Leksjoner
- 324
Ofte stilte spørsmål
Er leksjonen «Skjemaactions: Erstatt API-ruter for mutasjoner» gratis?
Ja – hele teksten i «Skjemaactions: Erstatt API-ruter for mutasjoner» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Skjemaactions: Erstatt API-ruter for mutasjoner»?
Koble Server Actions direkte til HTML-skjemaactions for mutasjoner uten unødvendig boilerplate og med full revalidering. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med React Academy?
Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Skjemaactions: Erstatt API-ruter for mutasjoner»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?
Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Server Actions i React 19 og Next.js
- Skjemaactions: Erstatt API-ruter for mutasjoner
- useActionState og useFormStatus
- Progressiv forbedring med Server Actions