useActionState en useFormStatus
Gebruik useActionState om de status en fouten tijdens het wachten bij te houden, en useFormStatus om verzendknoppen tijdens de uitvoering uit te schakelen.
useActionState en useFormStatus is een gratis React Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.
Kennismaken met useActionState
useActionState(action, initialState) is een React 19-hook die een Server Action omwikkelt om de status ervan tussen inzendingen bij te houden. De hook ontvangt de actiefunctie en een beginwaarde voor de status en retourneert een tuple waarmee je de volledige formulierervaring kunt aansturen.
De geretourneerde tuple
De hook retourneert [state, formAction, isPending]. state bevat de meest recente geretourneerde waarde van de actie, aanvankelijk null of je beginwaarde. formAction is de omwikkelde actie die je aan het formulier doorgeeft. isPending is true zolang de actie op de server wordt uitgevoerd.
Status tussen inzendingen bijhouden
Elke keer dat het formulier wordt verzonden, wordt de Server Action uitgevoerd en wordt de geretourneerde waarde de nieuwe state. Tijdens de eerste render is state gelijk aan initialState. Hierdoor kun je eenvoudig een verschillende gebruikersinterface tonen afhankelijk van de vraag of er eerdere inzendingen zijn geweest en wat deze hebben geretourneerd.
Inline validatiefouten tonen
Als de Server Action { errors: { email: 'Invalid email' } } retourneert, kun je de fout inline weergeven: {state.errors?.email && <p>{state.errors.email}</p>}. Omdat de status tussen renders behouden blijft, blijft de foutmelding zichtbaar totdat de status door de volgende geslaagde inzending wordt vervangen.
Succesmeldingen tonen
Wanneer de actie { success: true } retourneert, kan de component een succesmelding renderen: {state?.success && <p>Form submitted!</p>}. Je kunt het formulier voorwaardelijk verbergen of vervangen door de succesmelding op basis van de statuswaarde.
Kennismaken met useFormStatus
useFormStatus() is een hook die de wachtstatus leest van het dichtstbijzijnde bovenliggende <form>-element. De hook retourneert een object met onder andere { pending: boolean }. Je moet deze hook gebruiken binnen een component die een kind van het formulier is, niet in de component die het formulier zelf rendert.
Waarom deze locatiebeperking bestaat
De beperking dat useFormStatus binnen het formulier moet worden gebruikt, bestaat omdat de hook de context van het formulier uit de React-boom erboven leest. Als je de hook aanroept in dezelfde component die het formulier rendert, is deze een broer van het formulier en geen afstammeling. Daardoor heeft de hook geen toegang tot de status van het formulier.
Een component voor de verzendknop maken
Het standaardpatroon is om de verzendknop uit te breiden tot een eigen component: function SubmitButton() { const { pending } = useFormStatus(); return <button disabled={pending}>Submit</button>; }. Vervolgens plaats je deze component binnen het formulier, zodat deze toegang krijgt tot de wachtstatus van het formulier.
De verzendknop uitschakelen
Door disabled={pending} in te stellen op de verzendknop voorkom je dubbele inzendingen. Wanneer de gebruiker op Verzenden klikt en de Server Action wordt uitgevoerd, is pending true, waardoor de knop wordt uitgeschakeld en niet kan worden aangeklikt. Wanneer de actie is voltooid, wordt pending weer false en wordt de knop opnieuw ingeschakeld.
Beide hooks combineren
Het volledige patroon voor een goede formulierervaring combineert beide hooks: useActionState in de formuliercomponent houdt het actieresultaat bij en levert formAction, terwijl useFormStatus in een onderliggende SubmitButton-component de wachtstatus bijhoudt. Samen zorgen ze voor een duidelijke weergave van validatiefouten en een responsieve verzendknop.
Optimistische gebruikersinterface met useOptimistic
Voor een nog snellere gebruikerservaring werkt useOptimistic samen met useActionState. Je werkt de gebruikersinterface onmiddellijk bij met het verwachte resultaat voordat de server antwoordt en stemt deze vervolgens af wanneer het werkelijke antwoord binnenkomt. Dit patroon komt vaak voor bij vind-ik-leuk-knoppen, takenlijsten en andere interacties die snel feedback geven.
Locatie van useFormStatus
Waar moet useFormStatus worden aangeroepen om correct te werken?
Lesoverzicht
useActionState(action, initialState) retourneert [state, formAction, isPending] om de resultaten van Server Actions bij te houden. De status bevat de geretourneerde waarde van de actie, waarmee je inline fouten en succesmeldingen kunt tonen. useFormStatus() levert { pending } binnen kindcomponenten van het formulier, zodat je responsieve verzendknoppen kunt maken. Samen zorgen beide hooks voor een volledige, toegankelijke formulierervaring.
Leer React met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 88
- Lessen
- 324
Veelgestelde vragen
Is de les “useActionState en useFormStatus” gratis?
Ja — de volledige tekst van “useActionState en useFormStatus” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.
Wat leer ik in “useActionState en useFormStatus”?
Gebruik useActionState om de status en fouten tijdens het wachten bij te houden, en useFormStatus om verzendknoppen tijdens de uitvoering uit te schakelen. Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met React Academy te beginnen?
Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “useActionState en useFormStatus”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over React Academy?
Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Server Actions in React 19 en Next.js
- Form Actions: API-routes vervangen voor mutaties
- useActionState en useFormStatus
- Progressive enhancement met Server Actions