Wat is React
React is een JavaScript-library voor het bouwen van gebruikersinterfaces, ontwikkeld en onderhouden door Meta (voorheen Facebook). Kenmerkend zijn de declaratieve UI-beschrijving en de componentgebaseerde architectuur; React wordt breed ingezet, van kleine widgets tot volledige SPA’s. De kern van React is efficiënt herrenderen via de virtual DOM. Wanneer de state verandert, past React alleen de verschillen toe op de DOM, zodat je de DOM nooit handmatig hoeft te manipuleren.Deze pagina behandelt de combinatie van React 19 en Inertia v3. De starter kits van Laravel 13 gebruiken deze opzet standaard.
JSX en TSX
React-componenten schrijf je in de syntaxis JSX (JavaScript XML). Je schrijft HTML-achtige notatie direct in JavaScript..tsx) de standaard. Dankzij typedefinities wordt de IDE-autocompletion sterker en vind je bugs eerder.
De positie binnen Laravel
Geschiedenis
De relatie tussen React en Laravel is iets korter dan die met Vue, maar inmiddels wordt React gelijkwaardig of zelfs prominenter behandeld. Bij Laravel 6 (2019) werd de authenticatiescaffolding afgesplitst naar de packagelaravel/ui, en werd naast Vue ook een React-versie van de scaffold aangeboden. In die tijd was Vue echter dominant en had de React-versie weinig zichtbaarheid.
Met de toevoeging van de Inertia + React-stack aan Laravel Breeze (2021) begon de serieuze adoptie, en bij de vernieuwing van de starter kits in Laravel 12 (2025) kwam React volledig op gelijke voet met Vue te staan (het wordt zelfs als eerste getoond).
De huidige mainstream: Inertia × React
De belangrijkste manier om React in Laravel te gebruiken is tegenwoordig Inertia × React. Inertia realiseert een “moderne monoliet”-architectuur waarbij je zonder een API te ontwerpen data rechtstreeks vanuit Laravel-controllers aan React-componenten doorgeeft.Setup
Via een starter kit (aanbevolen)
Voor een nieuw project is een starter kit de makkelijkste route.inertiajs/inertia-laravel(server-side adapter)@inertiajs/react(clientadapter)react+react-dom(React 19 zelf)@vitejs/plugin-react(Vite-plugin)- TypeScript +
@types/react - Tailwind CSS + de shadcn/ui-componentlibrary
- De middleware
HandleInertiaRequests - Authenticatieschermen zoals inloggen en registreren (al geïmplementeerd met Inertia + React + TypeScript)
Handmatige installatie
Voeg je Inertia toe aan een bestaand project, dan installeer je de server- en clientzijde afzonderlijk.vite.config.ts.
resources/js/app.tsx.
Zie de officiële Inertia-documentatie voor de details van een handmatige installatie (zoals het instellen van de roottemplate en het registreren van de middleware).
Directorystructuur
In de starter kits plaats je React-paginacomponenten in de directoryresources/js/pages/.
Inertia::render('posts/index', [...]), dan is resources/js/pages/posts/index.tsx de bijbehorende component.
De basis van de JSX-syntaxis
React gebruikt JSX: een stijl waarbij je HTML-achtige syntaxis in JavaScript schrijft. Hier zijn de patronen die je minimaal moet kennen om de code van de starter kits te kunnen lezen.{} — variabelen invoegen
Binnen JSX gebruik je {} om JavaScript-waarden of -expressies in te voegen.
Voorwaarden — && en de ternaire operator
React kent geen directive zoals v-if. Voor eenvoudige voorwaarden gebruik je de &&-operator, voor if/else de ternaire operator ? :.
Lijsten renderen — .map()
Voor het renderen van lijsten gebruik je Array.map(). Geef altijd de prop key op voor efficiënte diff-updates.
v-for :key in Vue of {#each} in Svelte.
className — CSS-klassenamen
Omdat JSX naar JavaScript wordt gecompileerd, is class een gereserveerd woord. Voor CSS-klassen gebruik je className.
Eventhandlers — camelCase
Eventattributen in JSX zijn in camelCase en krijgen een functiereferentie.De basis van paginacomponenten
Een Inertia-paginacomponent is een gewone React-component. De data die je vanuit de Laravel-controller doorgeeft, ontvang je als props.Controller
React-paginacomponent
De Link-component
Met de <Link>-component van @inertiajs/react verlopen paginanavigaties via XHR, zodat een volledige browserreload wordt vermeden.
<a>-tag, maar op de achtergrond vervangt Inertia alleen de paginacomponent, waardoor het aanvoelt als een SPA.
De Form-component
De <Form>-component van @inertiajs/react is de aanbevolen stijl voor formulierverzending die in de authenticatieschermen van de starter kits wordt gebruikt. Je geeft action en method op als props en ontvangt errors en processing via een children-functie (render prop).
Basisgebruik
<Form> is een functie ({ errors, processing }) => JSX (het render-prop-patroon). De Form-component berekent deze waarden automatisch en geeft ze door. Voor de formuliervelden gebruik je geen onChange-handler maar het native HTML-attribuut name, zodat de standaard formulierdataverzameling van de browser werkt.
Het patroon van de starter kits
De starter kits gebruiken Wayfinder om routes als objecten te beheren.store.form() geeft een object terug met de action en method van het routeobject, dat je in <Form> spreadt.
resetOnSuccess worden bij een geslaagde verzending automatisch gereset. Gebruik dit voor velden die je na het verzenden leeg wilt maken, zoals wachtwoordvelden.
Gebruik je Wayfinder niet, dan werkt het net zo goed als je direct een URL doorgeeft, zoals
action="/login".De useForm-hook
Voor formulierverwerking gebruik je de useForm-hook van @inertiajs/react. Statebeheer van het formulier, verzenden en het tonen van validatiefouten implementeer je hiermee eenvoudig.
Aan de controllerkant
React-formuliercomponent
useForm teruggeeft:
Komt er een validatiefout terug, dan toont
useForm de fouten terwijl de ingevoerde inhoud behouden blijft.
Gedeelde data (shared data)
Data die je op elke pagina nodig hebt (zoals de ingelogde gebruiker en flashberichten) definieer je in de methodeshare() van de middleware HandleInertiaRequests.
usePage()-hook.
Gedeelde data wordt bij elke request meegestuurd; beperk deze daarom tot het strikt noodzakelijke. Gebruik je lazy evaluation met
fn(), dan wordt de data alleen geëvalueerd wanneer er daadwerkelijk toegang toe is.De basis van React-hooks
Hier zijn de fundamentele React-hooks die je moet kennen om met Inertia × React te ontwikkelen.useState — lokaal statebeheer
useEffect — side effects verwerken
useMemo en useCallback — prestatieoptimalisatie
TypeScript-ondersteuning
De React-versie van de starter kit gebruikt standaard TypeScript. In combinatie met de typedefinities van Inertia waarborg je de typeveiligheid van je props.Globale typedefinities
In de starter kits definieer je de types van gedeelde data inresources/js/types/index.d.ts.
Types gebruiken in paginacomponenten
Samenvatting
React komt in combinatie met Laravel vooral tot zijn recht in de “moderne monoliet”-opzet via Inertia. De uitstekende samenwerking met TypeScript maakt het geschikt voor de ontwikkeling van grootschalige applicaties.
Met Inertia × React krijg je een ontwikkelervaring die de eenvoud van een Laravel-backend combineert met het krachtige ecosysteem van React. Maak je een project aan met de starter kit, dan kun je direct beginnen met ontwikkelen, inclusief authenticatieschermen.
Officiële Inertia.js-documentatie
Raadpleeg de officiële documentatie voor alle functies van Inertia v3.