Nederlands

Ontdek React Server Actions, een krachtige functie voor het direct op de server afhandelen van formulierinzendingen en datamutaties, wat React-ontwikkeling vereenvoudigt en de beveiliging verbetert.

React Server Actions: Vereenvoudigde Server-Side Formulierverwerking

React Server Actions, geïntroduceerd in React 18 en aanzienlijk verbeterd in Next.js, bieden een revolutionaire aanpak voor het direct op de server afhandelen van formulierinzendingen en datamutaties. Deze krachtige functie vereenvoudigt het ontwikkelproces, verhoogt de beveiliging en verbetert de prestaties in vergelijking met traditionele client-side data fetching en manipulatie.

Wat zijn React Server Actions?

Server Actions zijn asynchrone functies die op de server draaien en direct vanuit React-componenten kunnen worden aangeroepen. Ze stellen u in staat om server-side taken uit te voeren, zoals:

Het belangrijkste voordeel van Server Actions is dat ze u in staat stellen server-side code te schrijven binnen uw React-componenten, waardoor de noodzaak voor aparte API-routes en complexe client-side data fetching logica wordt geëlimineerd. Deze co-locatie van UI en server-side logica leidt tot een beter onderhoudbare en efficiëntere codebase.

Voordelen van het gebruik van React Server Actions

Het gebruik van React Server Actions biedt verschillende aanzienlijke voordelen:

Vereenvoudigde Ontwikkeling

Server Actions verminderen boilerplate code doordat u formulierinzendingen en datamutaties direct binnen uw React-componenten kunt afhandelen. Dit elimineert de noodzaak voor aparte API-eindpunten en complexe client-side data fetching logica, wat het ontwikkelproces stroomlijnt en uw code gemakkelijker te begrijpen en te onderhouden maakt. Neem een eenvoudig contactformulier. Zonder Server Actions zou u een aparte API-route nodig hebben om de formulierinzending af te handelen, client-side JavaScript om de gegevens te verzenden, en foutafhandelingslogica aan zowel de client- als serverzijde. Met Server Actions kan dit allemaal binnen het component zelf worden afgehandeld.

Verbeterde Beveiliging

Door code op de server uit te voeren, verkleinen Server Actions het aanvalsoppervlak van uw applicatie. Gevoelige gegevens en bedrijfslogica worden weggehouden van de client, waardoor kwaadwillende gebruikers er niet mee kunnen knoeien. Bijvoorbeeld, databankgegevens of API-sleutels worden nooit blootgesteld in de client-side code. Alle database-interacties vinden plaats op de server, wat het risico op SQL-injectie of ongeautoriseerde gegevenstoegang beperkt.

Verbeterde Prestaties

Server Actions kunnen de prestaties verbeteren door de hoeveelheid JavaScript die op de client moet worden gedownload en uitgevoerd te verminderen. Dit is met name gunstig voor gebruikers op apparaten met weinig vermogen of met trage internetverbindingen. De gegevensverwerking vindt plaats op de server, en alleen de noodzakelijke UI-updates worden naar de client gestuurd, wat resulteert in snellere laadtijden en een soepelere gebruikerservaring.

Optimistische Updates

Server Actions integreren naadloos met React's Suspense en Transitions, wat optimistische updates mogelijk maakt. Optimistische updates stellen u in staat om de UI onmiddellijk bij te werken, zelfs voordat de server de actie heeft bevestigd. Dit zorgt voor een responsievere en boeiendere gebruikerservaring, omdat gebruikers niet hoeven te wachten op een reactie van de server voordat ze de resultaten van hun acties zien. In e-commerce kan het toevoegen van een item aan een winkelwagentje onmiddellijk worden weergegeven terwijl de server de toevoeging op de achtergrond bevestigt.

Progressive Enhancement

Server Actions ondersteunen progressive enhancement, wat betekent dat uw applicatie nog steeds kan functioneren, zelfs als JavaScript is uitgeschakeld of niet laadt. Wanneer JavaScript is uitgeschakeld, worden formulieren verzonden als traditionele HTML-formulieren, en de server zal de inzending afhandelen en de gebruiker doorsturen naar een nieuwe pagina. Dit zorgt ervoor dat uw applicatie toegankelijk blijft voor alle gebruikers, ongeacht hun browserconfiguratie of netwerkomstandigheden. Dit is vooral belangrijk voor toegankelijkheid en SEO.

Hoe React Server Actions te Gebruiken

Om React Server Actions te gebruiken, moet u een framework gebruiken dat ze ondersteunt, zoals Next.js. Hier is een stapsgewijze handleiding:

1. Definieer de Server Action

Maak een asynchrone functie die op de server zal draaien. Deze functie moet de logica afhandelen die u op de server wilt uitvoeren, zoals het bijwerken van een database of het aanroepen van een API. Markeer de functie met de `"use server"`-richtlijn bovenaan om aan te geven dat het een Server Action is. Deze richtlijn vertelt de React-compiler om de functie als een server-side functie te behandelen en om automatisch de serialisatie en deserialisatie van gegevens tussen de client en de server af te handelen.

// app/actions.js
'use server'

import { revalidatePath } from 'next/cache';
import { saveMessage } from './db';

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    await saveMessage(message);
    revalidatePath('/'); // Clear the route cache
    return { message: 'Message saved successfully!' };
  } catch (e) {
    return { message: 'Failed to save message' };
  }
}

Uitleg:

2. Importeer en Gebruik de Server Action in uw Component

Importeer de Server Action in uw React-component en gebruik deze als de `action`-prop op een formulierelement. De `useFormState`-hook kan worden gebruikt om de status van het formulier te beheren en feedback aan de gebruiker te tonen.

// app/page.jsx
'use client';

import { useFormState } from 'react-dom';
import { createMessage } from './actions';

export default function Home() {
  const [state, formAction] = useFormState(createMessage, {message: ''});

  return (
    
{state?.message &&

{state.message}

}
); }

Uitleg:

3. Verwerk Formuliergegevens

Binnen de Server Action kunt u de formuliergegevens benaderen met de `FormData` API. Deze API biedt een handige manier om de waarden van formuliervelden te benaderen.

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  // ...
}

4. Foutafhandeling

Gebruik `try...catch`-blokken om fouten af te handelen die kunnen optreden tijdens de uitvoering van de Server Action. Retourneer een foutmelding in het state-object om deze aan de gebruiker te tonen.

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    // ...
  } catch (e) {
    return { message: 'Failed to save message' };
  }
}

5. Gegevens Her-valideren

Nadat een Server Action met succes gegevens heeft gemuteerd, moet u mogelijk de data-cache her-valideren om ervoor te zorgen dat de UI de laatste wijzigingen weergeeft. Gebruik de `revalidatePath`- of `revalidateTag`-functies van `next/cache` om specifieke paden of tags te her-valideren.

'use server'

import { revalidatePath } from 'next/cache';

export async function createMessage(prevState, formData) {
  // ...
  revalidatePath('/'); // Clear the route cache
  // ...
}

Geavanceerd Gebruik

Data Muteren

Server Actions zijn bijzonder geschikt voor het muteren van gegevens, zoals het bijwerken van databases of externe API's. U kunt Server Actions gebruiken om complexe datamutaties af te handelen die server-side logica vereisen, zoals het valideren van gegevens, het uitvoeren van berekeningen of het interageren met meerdere gegevensbronnen. Denk aan een scenario waarin u het profiel van een gebruiker moet bijwerken en een bevestigingsmail moet sturen. Een Server Action kan zowel de database-update als het e-mailverzendproces in een enkele, atomische operatie afhandelen.

Authenticatie en Autorisatie

Server Actions kunnen worden gebruikt voor authenticatie en autorisatie. Door authenticatie- en autorisatiecontroles op de server uit te voeren, kunt u ervoor zorgen dat alleen geautoriseerde gebruikers toegang hebben tot gevoelige gegevens en functionaliteit. U kunt Server Actions gebruiken om gebruikerslogins, registratie en wachtwoordresets af te handelen. Een Server Action kan bijvoorbeeld gebruikersgegevens verifiëren met een database en een token retourneren dat kan worden gebruikt om volgende verzoeken te authenticeren.

Edge Functions

Server Actions kunnen worden geïmplementeerd als Edge Functions, die draaien op een wereldwijd netwerk van servers dicht bij uw gebruikers. Dit kan de latentie aanzienlijk verminderen en de prestaties verbeteren, vooral voor gebruikers op geografisch verspreide locaties. Edge Functions zijn ideaal voor het afhandelen van Server Actions die een lage latentie vereisen, zoals real-time data-updates of gepersonaliseerde contentlevering. Next.js biedt ingebouwde ondersteuning voor het implementeren van Server Actions als Edge Functions.

Streaming

Server Actions ondersteunen streaming, waarmee u gegevens in brokken naar de client kunt sturen zodra ze beschikbaar komen. Dit kan de waargenomen prestaties van uw applicatie verbeteren, vooral voor Server Actions die lang duren om uit te voeren. Streaming is met name handig voor het verwerken van grote datasets of complexe berekeningen. U kunt bijvoorbeeld zoekresultaten naar de client streamen terwijl ze uit de database worden opgehaald, wat een responsievere gebruikerservaring biedt.

Best Practices

Hier zijn enkele best practices om te volgen bij het gebruik van React Server Actions:

Praktijkvoorbeelden

Laten we enkele praktijkvoorbeelden bekijken van hoe React Server Actions kunnen worden gebruikt in verschillende soorten applicaties:

E-commerce Applicatie

Social Media Applicatie

Content Management Systeem (CMS)

Internationalisatieoverwegingen

Bij het ontwikkelen van applicaties voor een wereldwijd publiek is het essentieel om rekening te houden met internationalisatie (i18n) en lokalisatie (l10n). Hier zijn enkele overwegingen voor het gebruik van React Server Actions in geïnternationaliseerde applicaties:

Bijvoorbeeld, bij het verwerken van een formulier dat een datuminvoer vereist, kan een Server Action de `Intl.DateTimeFormat` API gebruiken om de datum te parsen volgens de locale van de gebruiker, zodat de datum correct wordt geïnterpreteerd, ongeacht de regionale instellingen van de gebruiker.

Conclusie

React Server Actions zijn een krachtig hulpmiddel voor het vereenvoudigen van server-side formulierverwerking en datamutaties in React-applicaties. Door u in staat te stellen server-side code rechtstreeks binnen uw React-componenten te schrijven, verminderen Server Actions boilerplate code, verhogen ze de beveiliging, verbeteren ze de prestaties en maken ze optimistische updates mogelijk. Door de best practices in deze gids te volgen, kunt u Server Actions benutten om robuustere, schaalbaardere en beter onderhoudbare React-applicaties te bouwen. Naarmate React blijft evolueren, zullen Server Actions ongetwijfeld een steeds belangrijkere rol spelen in de toekomst van webontwikkeling.