Was ist React?
React ist eine von Meta (früher Facebook) entwickelte und gepflegte JavaScript-Bibliothek zum Aufbau von Benutzeroberflächen. Kennzeichnend sind die deklarative UI-Beschreibung und die komponentenbasierte Architektur; React wird für kleine Widgets bis hin zu vollständigen SPAs eingesetzt. Der Kern von React ist das effiziente Re-Rendering über einen virtuellen DOM. Ändert sich der State, überträgt React nur die Differenz ins DOM – Sie müssen das DOM nicht manuell manipulieren.Diese Seite behandelt die Kombination React 19 mit Inertia v3. Die Starterkits von Laravel 13 verwenden diese Konstellation standardmäßig.
JSX und TSX
React-Komponenten werden in JSX (JavaScript XML) geschrieben. Eine HTML-ähnliche Syntax lässt sich direkt in JavaScript einbetten..tsx) Standard. Typdefinitionen verbessern die IDE-Vervollständigung und helfen, Bugs früh zu erkennen.
Rolle in Laravel
Historie
Die Beziehung zwischen React und Laravel ist etwas jünger als die zu Vue, mittlerweile aber mindestens gleichrangig. Mit Laravel 6 (2019) wurde das Auth-Scaffold in das Paketlaravel/ui ausgelagert; zusammen mit Vue erschien auch ein React-Scaffold. Zu diesem Zeitpunkt dominierte Vue, und die React-Variante fristete ein Nischendasein.
In Laravel Breeze (2021) wurde der Inertia + React-Stack ergänzt und damit die ernsthafte Adoption gestartet. Mit der Starterkit-Erneuerung in Laravel 12 (2025) wurde React vollständig gleichrangig zu Vue (und wird sogar zuerst angezeigt).
Aktueller Standard: Inertia × React
Der Standard-Ansatz für React in Laravel ist heute Inertia × React. Inertia ermöglicht die „moderne Monolith”-Architektur, bei der Sie ohne API-Design direkt aus dem Laravel-Controller Daten an React-Komponenten übergeben.Setup
Via Starterkit (empfohlen)
Beim Aufsetzen eines neuen Projekts ist das Starterkit am komfortabelsten.inertiajs/inertia-laravel(serverseitiger Adapter)@inertiajs/react(Client-Adapter)react+react-dom(React 19 selbst)@vitejs/plugin-react(Vite-Plugin)- TypeScript +
@types/react - Tailwind CSS + shadcn/ui-Komponenten
- Middleware
HandleInertiaRequests - Auth-Seiten für Login, Registrierung u. a. (bereits mit Inertia + React + TypeScript umgesetzt)
Manuelle Installation
Für eine Ergänzung in einem bestehenden Projekt installieren Sie Server- und Client-Seite separat.vite.config.ts:
resources/js/app.tsx:
Details zur manuellen Installation (Root-Template, Middleware-Registrierung usw.) finden Sie in der offiziellen Inertia-Dokumentation.
Verzeichnisstruktur
Im Starterkit werden React-Page-Komponenten unterresources/js/pages/ abgelegt.
Inertia::render('posts/index', [...]) verweist auf die Komponente resources/js/pages/posts/index.tsx.
Grundlagen der JSX-Syntax
React verwendet JSX. Nachfolgend die minimal notwendigen Muster, um den Code der Starterkits lesen zu können.{} – Variablen-Interpolation
Innerhalb von JSX betten Sie JavaScript-Werte und -Ausdrücke mit {} ein.
Bedingte Darstellung – && und ternärer Operator
React hat keine Direktive wie v-if. Für einfache Bedingungen nutzen Sie den &&-Operator, für if/else den ternären Operator ? :.
Listen darstellen – .map()
Für Listen wird Array.map() verwendet. Für ein effizientes diffbasiertes Rendering ist das key-Prop erforderlich.
v-for :key in Vue oder {#each} in Svelte.
className – CSS-Klassennamen
Da JSX zu JavaScript kompiliert wird und class ein reserviertes Wort ist, verwenden Sie für CSS-Klassen className.
Event-Handler – camelCase
Event-Attribute in JSX werden in camelCase geschrieben; Sie übergeben eine Funktionsreferenz.Grundlagen der Page-Komponente
Eine Inertia-Page-Komponente ist eine gewöhnliche React-Komponente. Die aus dem Laravel-Controller übergebenen Daten stehen als Props zur Verfügung.Controller
React-Page-Komponente
Die Link-Komponente
Die von @inertiajs/react bereitgestellte <Link>-Komponente sorgt dafür, dass Seitenwechsel per XHR ablaufen und ein Full-Page-Reload vermieden wird.
<a>-Anweisung. Im Hintergrund tauscht Inertia nur die Page-Komponente aus – so entsteht das SPA-artige Gefühl.
Die Form-Komponente
Die <Form>-Komponente von @inertiajs/react ist der empfohlene Stil zum Absenden von Formularen im Starterkit. Sie geben action und method als Props an und erhalten errors und processing über eine Children-Funktion (Render-Prop).
Grundlegende Verwendung
<Form> ist eine Funktion ({ errors, processing }) => JSX (Render-Prop-Muster). Die Form-Komponente berechnet diese Werte automatisch und übergibt sie. Formularfelder verwenden statt eines onChange-Handlers das HTML-native name-Attribut, sodass die eingebaute Formularerfassung des Browsers funktioniert.
Muster aus dem Starterkit
Die Starterkits verwalten Routen mit Wayfinder als Objekte.store.form() gibt ein Objekt mit action und method aus dem Route-Objekt zurück, das per Spread an <Form> übergeben wird.
resetOnSuccess angegebenen Felder werden bei erfolgreichem Absenden automatisch zurückgesetzt. Nutzen Sie das etwa für Passwortfelder, die nach dem Absenden geleert werden sollen.
Ohne Wayfinder verhalten sich
action="/login" und Co. identisch, sobald Sie die URL direkt übergeben.Der useForm-Hook
Für die Formularverarbeitung nutzen Sie den useForm-Hook aus @inertiajs/react. State-Handling, Absenden und Anzeige von Validierungsfehlern lassen sich damit schlank umsetzen.
Auf der Controller-Seite
React-Formular-Komponente
useForm zurückgegebenen Objekts:
Bei Validierungsfehlern behält
useForm die Eingaben und zeigt die Fehler an.
Shared Data
Daten, die auf allen Seiten gemeinsam nötig sind (angemeldeter Nutzer, Flash-Messages u. a.), definieren Sie in der Methodeshare() der Middleware HandleInertiaRequests.
usePage()-Hook.
Da Shared Data in jeder Anfrage enthalten sind, sollten Sie sie auf das Nötigste beschränken. Eine Lazy-Evaluation per
fn() wird nur ausgeführt, wenn die Daten tatsächlich gelesen werden.Grundlagen der React-Hooks
Wichtige React-Hooks für die Arbeit mit Inertia × React:useState – lokaler State
useEffect – Seiteneffekte
useMemo und useCallback – Performance-Optimierung
TypeScript-Unterstützung
Die React-Variante der Starterkits nutzt standardmäßig TypeScript. In Kombination mit den Typdefinitionen von Inertia erhalten Sie Typsicherheit für Props.Globale Typdefinitionen
In den Starterkits werden die Typen der Shared Data inresources/js/types/index.d.ts definiert.
Verwendung der Typen in Page-Komponenten
Fazit
React entfaltet in Kombination mit Laravel – insbesondere über Inertia im Sinne eines „modernen Monolithen” – seine Stärken. Die Zusammenarbeit mit TypeScript ist ausgezeichnet, was React besonders für große Anwendungen prädestiniert.
Mit Inertia × React verbinden Sie die Einfachheit des Laravel-Backends mit dem starken Ökosystem von React. Legen Sie ein Projekt mit dem Starterkit an, sind auch die Auth-Screens sofort einsatzbereit.
Offizielle Inertia.js-Dokumentation
Alle Funktionen von Inertia v3 finden Sie in der offiziellen Dokumentation.