Background Decoration
13.3.2026Dietrich Bojko20 Min. Lesezeit

CRUD im Frontend: React Hook Form & Zod mit API

Zurück zur Übersicht
CRUD im Frontend: React Hook Form & Zod mit API
Schlanke, holografische Benutzeroberfläche eines Artikel-Editors. Formularfelder für Titel und Inhalt haben dezente, grüne Validierungspulse und rote Fehlermeldungen in der Nähe eines Submit-Buttons.
8 Views

Häufig gestellte Fragen (FAQ)

Next.js Server Actions sind ein fantastisches neues Feature, das perfekt funktioniert, wenn deine Datenbank direkt mit Next.js verbunden ist (z.B. über Prisma oder Drizzle). In unserer Headless-Architektur ist Laravel jedoch eine völlig eigenständige, externe API auf einem anderen Server (oder Port). Für die nahtlose Übertragung unserer Sanctum-Session-Cookies, das komplexe Error-Handling (422 Unprocessable Entity) und die feingranulare API-Kommunikation ist der Weg über Client Components, Axios und unser React Hook Form Zod Setup aktuell die wesentlich robustere, bewährtere und leichter zu debuggende Enterprise-Lösung.
Ja, absolut! Das ist einer der größten Vorteile von Zod. Wenn wir im nächsten Teil den Datei-Upload bauen, werden wir unserem Zod-Schema beibringen, das File-Objekt des Browsers zu prüfen. Du kannst mit wenigen Zeilen Code (z.B. z.instanceof(File).refine(file => file.size < 5000000, 'Maximal 5MB!')) sicherstellen, dass Nutzer nur kleine JPG- oder PNG-Bilder hochladen können. Und das alles im Frontend, bevor der langsame Upload zum Server überhaupt beginnt!
Das nennt man "Server-as-the-Single-Source-of-Truth" (Der Server als einzige Wahrheitsquelle). In älteren React-Anwendungen hat man nach dem Löschen eines Artikels mühsam das Array im Frontend gefiltert (posts.filter(p => p.id !== id)). Das ist fehleranfällig. Was, wenn ein anderer Redakteur in der Zwischenzeit einen neuen Artikel geschrieben hat? Durch den Aufruf von router.refresh() zwingen wir Next.js, die Server Component (unsere Datentabelle) im Hintergrund komplett frisch von der Laravel-API zu laden. Das Frontend bleibt dumm, der Server diktiert die Realität. Das Ergebnis ist immer zu 100 % korrekt.
Nein. Interaktive Formulare, die auf Tasteneingaben reagieren (onChange), Benutzereingaben validieren und State verwalten (wie isSubmitting), benötigen zwingend die Ausführungsumgebung des Browsers. Deshalb müssen alle Formular-Komponenten immer mit der 'use client' Direktive am Anfang der Datei markiert werden. Du kannst diese Client-Formulare aber problemlos in deine Server Components einbetten (als sogenannte "Client Boundaries").

Ausblick auf Teil 9: Media-Management und Datei-Uploads

Texte und Kategorien sind das Rückgrat eines jeden CMS, aber was ist ein Blog ohne atemberaubende Bilder? Bisher feuern wir nur simple JSON-Texte über die Leitung. Wenn wir jedoch Bilder hochladen wollen, ändern sich die Spielregeln des Internets komplett.

Im nächsten Teil unserer Masterclass stellen wir uns dem komplexesten Thema der API-Entwicklung: Dem Datei-Upload (multipart/form-data). Wir werden im Laravel-Backend das legendäre Paket Spatie Media Library installieren, um hochgeladene Bilder automatisch zu komprimieren und WebP-Thumbnails zu generieren. Im Next.js-Frontend erweitern wir unser Formular um eine Drag-and-Drop Dropzone, senden die Bilddateien sicher über Sanctum an die API und nutzen schließlich die extrem performante next/image Komponente, um diese Bilder rasend schnell an unsere Blog-Leser auszuliefern. Wir bringen Farbe in dein CMS!

Hier geht es zu Teil 9: Bilder-Uploads mit Next.js und Laravel Spatie Media Library

Dietrich Bojko
Über den Autor

Dietrich Bojko

Senior Webentwickler

Webinteger arbeitet seit vielen Jahren produktiv mit Linux-basierten Entwicklungsumgebungen unter Windows.
Der Fokus liegt auf performanten Setups mit WSL 2, Docker, PHP, Node.js und modernen Build-Tools in realen Projekten – nicht auf theoretischen Beispielkonfigurationen.

Die Artikel dieser Serie entstehen direkt aus dem täglichen Einsatz in Kunden- und Eigenprojekten und dokumentieren bewusst auch typische Fehler, Engpässe und bewährte Workarounds.

Webseite besuchen

Schreiben Sie einen Kommentar