Aflastning af arbejde fra klienter til din server er let med Nexts serverhandlinger.

13.4-udgivelsen af ​​Next.js kom med en stabil App-router og muligheden for at foretage datamutationer med serverhandlinger. Denne funktion er en absolut game changer, fordi den lader dig udføre datamutationer udelukkende fra serverkomponenter. Dette medfører et væld af fordele inden for områder som hastighed, sikkerhed og appens overordnede ydeevne.

Lær, hvad serverhandlinger er, og hvordan du bruger denne nye funktion i din Next.js-applikation.

Hvad er serverhandlinger?

Serverhandlinger giver dig mulighed for at skrive engangsfunktioner på serversiden lige ved siden af ​​dine serverkomponenter. Dette er enormt, fordi du ikke længere behøver at skrive API-ruter, når du indsender formularer eller foretager nogen anden form for datamutation, bl.a. GraphQL-datamutationer.

Du kan have funktioner, der kører på din server, og du kan derefter kalde dem fra klient- eller serverkomponenter. Dette er en alfafunktion i Next.js 13.4, og den er bygget oven på React Actions. Brug af serverhandlinger fører til reduceret JavaScript på klientsiden og kan hjælpe dig med at oprette progressivt forbedrede formularer.

instagram viewer

Eksempel på serverhandlinger

Med serverhandlinger kan du udføre mutationer inde i Next.js på serveren. Tag et kig på denne nye funktion med et eksempel på Next.js-side, der gengiver en formular, der giver dig mulighed for at oprette et indlæg.

Her er importen:

importere Link fra"næste/link"
importere Formgruppe fra"@/components/FormGroup"
importere { revalidateTag } fra"næste/cache"
importere { omdirigere } fra"næste/navigation"

Nu til koden til at oprette indlægget. Denne funktion er en serverhandling; den kører på serveren og sender postens titel og brødtekst til API'et (som opretter posten i databasen):

asynkronfungereoprette Post(data) {
"brug server"
konst title = data.get("titel")
konst body = data.get("legeme")

vente hente(" http://127.0.0.1/posts", {
header: {"Indholdstype": "applikation/json"},
metode: POST,
legeme: JSON.stringify({title, body})
})

revalidateTag("indlæg")
omdirigere ("/")
}

Denne funktion får postens titel og brødtekst, som den derefter sender til /posts slutpunkt via en POST-anmodning. Det tvinger derefter cachen til at opdatere indhold forbundet med "indlæg"-tagget og omdirigerer tilbage til startsiden.

Her er en formular til at indsamle det nye indlægs titel og brødtekst:

eksportStandard NewPostForm() {
Vend tilbage (