Form Actions: ersätta API Routes för mutationer
Koppla Server Actions direkt till HTML-formulärs actions för formulärmutationer utan onödig boilerplate och med fullständig omvalidering.
Form Actions: ersätta API Routes för mutationer är en gratis lektion i React Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.
Det traditionella mönstret
I traditionella Next.js-applikationer kräver formulärinskickningar en Client Component med en onSubmit-hanterare som anropar fetch() för att skicka data med POST till en API-route. Mönstret fungerar, men kräver att ni skriver och underhåller både fetch-logiken på klientsidan och route-hanteraren på serversidan separat.
Server Actions förenklar formulär
Med Server Actions ersätter ni fetch-anropet och API-routen med en enda funktion. Formulärelementet får Server Action som sin action-prop: <form action={serverAction}>. React fångar upp formulärinskickningen och anropar action-funktionen med formulärdata automatiskt.
Åtkomst till formulärfält med FormData
Server Action tar automatiskt emot ett FormData-objekt som argument när den utlöses av ett formulär. Ni får åtkomst till enskilda fält med formData.get('email'), som returnerar värdet som en sträng. Alla vanliga FormData-metoder är tillgängliga, inklusive getAll() för fält med flera val.
Returnera resultat från actions
En Server Action kan returnera ett serialiserbart värde som klienten kan använda. Genom att returnera ett felobjekt som { error: 'Email already exists' } eller en lyckad-status som { success: true } kan klienten uppdatera användargränssnittet därefter utan att hela sidan laddas om.
Sidkomponenter förblir enkla
Eftersom formulärets action är en Server Action behöver sidkomponenten som innehåller formuläret inte vara en Client Component. Servern renderar formuläret som statisk HTML, och endast de interaktiva delarna, till exempel visning av fel, kräver JavaScript på klientsidan. Det minskar klientpaketet avsevärt.
Progressiv förbättring inbyggd
Ett formulär med action={serverAction} fungerar utan aktiverat JavaScript. Webbläsaren utför en vanlig HTML-formulär-POST, servern kör action-funktionen och servern returnerar den uppdaterade sidan. Denna äkta progressiva förbättring innebär att formuläret fungerar med bibehållen grundfunktion i alla miljöer.
Validera data på nytt efter en mutation
Efter att en Server Action har ändrat data måste cachelagrade siddata uppdateras. Om ni anropar revalidatePath('/dashboard') i action-funktionen ogiltigförklaras Next.js-cachelagret för den sökvägen, vilket gör att nästa begäran hämtar aktuella data. Detta är standardmetoden för att hålla serverrenderade sidor uppdaterade efter mutationer.
Detaljerad cache-ogiltigförklaring
revalidateTag('user-data') ger en mer detaljerad cache-ogiltigförklaring än revalidatePath. Ni märker fetch-anrop med next: { tags: ['user-data'] } och ogiltigförklarar sedan alla märkta data samtidigt inifrån Server Action, oavsett vilka sökvägar som visar dessa data.
Omdirigera efter en action
Server Actions kan omdirigera användaren till en ny sida efter en lyckad mutation genom att anropa redirect('/success') från modulen next/navigation. Omdirigeringen hanteras på serversidan, vilket innebär att webbläsaren får ett korrekt navigeringssvar i stället för en omdirigering på klientsidan.
Mutationer utanför formulär med startTransition
Server Actions är inte begränsade till formulärinskickningar. För knappklick och andra utlösare som inte är formulär omsluter ni action-anropet med startTransition(() => action(arg)). Det markerar navigeringen som en övergång, vilket gör att React kan hålla det aktuella användargränssnittet synligt medan action-funktionen körs på servern.
Validering i actions
Server Actions är rätt plats för validering på serversidan. Validera FormData-fälten, returnera valideringsfel om de inte godkänns och fortsätt med mutationen först när alla fält är giltiga. Bibliotek som Zod passar bra här: parsa FormData till ett typat schema och returnera felkartan om valideringen misslyckas.
Fråga om FormData
Vad tar en Server Action emot som argument när den utlöses av en formulärinskickning?
Lektionssammanfattning
Server Actions ersätter mönstret med fetch + API-route för formulärmutationer. Formulärets action-prop accepterar en Server Action direkt, som tar emot ett FormData-objekt. Actions returnerar serialiserbara resultat för uppdateringar av användargränssnittet, stöder revalidatePath och revalidateTag för cache-ogiltigförklaring och fungerar progressivt utan JavaScript.
Lär dig React med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 88
- Lektioner
- 324
Vanliga frågor
Är lektionen ”Form Actions: ersätta API Routes för mutationer” gratis?
Ja – hela texten till ”Form Actions: ersätta API Routes för mutationer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Form Actions: ersätta API Routes för mutationer”?
Koppla Server Actions direkt till HTML-formulärs actions för formulärmutationer utan onödig boilerplate och med fullständig omvalidering. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig React Academy?
Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Form Actions: ersätta API Routes för mutationer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här React Academy-lektionen?
Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Server Actions i React 19 och Next.js
- Form Actions: ersätta API Routes för mutationer
- useActionState och useFormStatus
- Progressiv förbättring med Server Actions