Att ladda ner arbete från klienter till din server är enkelt med Nexts serveråtgärder.
13.4-versionen av Next.js kom med en stabil App-router och möjligheten att göra datamutationer med serveråtgärder. Den här funktionen är en absolut spelväxlare eftersom den låter dig utföra datamutationer helt från serverkomponenter. Detta ger en mängd fördelar inom områden som hastighet, säkerhet och övergripande prestanda för appen.
Lär dig vad serveråtgärder är och hur du använder den här nya funktionen i din Next.js-applikation.
Vad är serveråtgärder?
Serveråtgärder låter dig skriva engångsfunktioner på serversidan bredvid dina serverkomponenter. Detta är enormt eftersom du inte längre behöver skriva API-rutter när du skickar formulär eller gör någon annan typ av datamutation, inklusive GraphQL-datamutationer.
Du kan ha funktioner som körs på din server, och du kan sedan anropa dem från klient- eller serverkomponenter. Detta är en alfafunktion i Next.js 13.4, och den är byggd ovanpå React Actions. Att använda serveråtgärder leder till minskat JavaScript på klientsidan och kan hjälpa dig att skapa progressivt förbättrade formulär.
Exempel på serveråtgärder
Med serveråtgärder kan du utföra mutationer inuti Next.js, på servern. Ta en titt på den här nya funktionen med ett exempel på Next.js-sida som återger ett formulär som låter dig skapa ett inlägg.
Här är importen:
importera Länk från"nästa/länk"
importera FormGroup från"@/components/FormGroup"
importera { revalidateTag } från"nästa/cache"
importera { omdirigering } från"nästa/navigering"
Nu till koden för att skapa inlägget. Denna funktion är en serveråtgärd; den körs på servern och skickar inläggets titel och text till API: t (som skapar inlägget i databasen):
asynkronfungeraskapa Post(data) {
"använd server"
konst title = data.get("titel")
konst body = data.get("kropp")vänta hämta(" http://127.0.0.1/posts", {
rubrik: {"Innehållstyp": "applikation/json"},
metod: POST,
kropp: JSON.stringify({title, body})
})
revalidateTag("inlägg")
dirigera om("/")
}
Denna funktion får inläggets titel och text som den sedan skickar till /posts slutpunkt via en POST-begäran. Den tvingar sedan cachen att uppdatera innehåll som är kopplat till "posts"-taggen och omdirigerar tillbaka till startsidan.
Här är ett formulär för att samla in det nya inläggets titel och text:
exporterastandard NewPostForm() {
lämna tillbaka (