Det er enkelt å laste ned arbeid fra klienter til serveren din med Nexts serverhandlinger.

13.4-utgivelsen av Next.js kom med en stabil App-ruter og muligheten til å gjøre datamutasjoner med serverhandlinger. Denne funksjonen er en absolutt game changer fordi den lar deg utføre datamutasjoner utelukkende fra serverkomponenter. Dette gir en rekke fordeler innen områder som hastighet, sikkerhet og den generelle ytelsen til appen.

Finn ut hva serverhandlinger er og hvordan du bruker denne nye funksjonen i Next.js-applikasjonen din.

Hva er serverhandlinger?

Serverhandlinger lar deg skrive engangsfunksjoner på serversiden rett ved siden av serverkomponentene dine. Dette er stort fordi du ikke lenger trenger å skrive API-ruter når du sender inn skjemaer eller gjør noen annen form for datamutasjon, inkludert GraphQL-datamutasjoner.

Du kan ha funksjoner som kjører på serveren din, og du kan deretter kalle dem fra klient- eller serverkomponenter. Dette er en alfafunksjon i Next.js 13.4, og den er bygget på toppen av React Actions. Bruk av serverhandlinger fører til redusert JavaScript på klientsiden, og kan hjelpe deg med å lage gradvis forbedrede skjemaer.

instagram viewer

Eksempel på serverhandlinger

Med serverhandlinger kan du utføre mutasjoner inne i Next.js, på serveren. Ta en titt på denne nye funksjonen med et eksempel på Next.js-side som gjengir et skjema som lar deg lage et innlegg.

Her er importen:

import Link fra"neste/lenke"
import FormGroup fra"@/components/FormGroup"
import { revalidateTag } fra"neste/cache"
import { omdirigere } fra"neste/navigering"

Nå for koden for å opprette innlegget. Denne funksjonen er en serverhandling; den kjører på serveren og sender posttittelen og brødteksten til APIen (som lager innlegget i databasen):

asynkronfunksjonopprette innlegg(data) {
"bruk server"
konst tittel = data.get("tittel")
konst body = data.get("kropp")

avvente hente(" http://127.0.0.1/posts", {
Overskrift: {"Innholdstype": "applikasjon/json"},
metode: POST,
kropp: JSON.stringify({title, body})
})

revalidateTag("innlegg")
omdirigere("/")
}

Denne funksjonen får innleggstittelen og brødteksten som den deretter sender til /posts endepunkt via en POST-forespørsel. Den tvinger deretter hurtigbufferen til å oppdatere innhold knyttet til «posts»-taggen, og omdirigerer tilbake til hjemmesiden.

Her er et skjema for å samle den nye posttittelen og brødteksten:

eksportmisligholde NewPostForm() {
komme tilbake (