Cos’è React
React è una libreria JavaScript per costruire interfacce utente, sviluppata e mantenuta da Meta (ex Facebook). È caratterizzata da una descrizione dichiarativa della UI e da un’architettura basata sui componenti, e viene usata da piccoli widget a intere SPA. Il cuore di React è il DOM virtuale, che consente re-render efficienti. Quando lo state cambia, React riflette nel DOM solo le differenze, senza che sia necessario manipolarlo manualmente.In questa pagina spieghiamo la combinazione di React 19 e Inertia v3. Lo starter kit di Laravel 13 usa questa configurazione per impostazione predefinita.
JSX e TSX
I componenti React si scrivono con la sintassi JSX (JavaScript XML). Puoi scrivere direttamente dentro JavaScript una notazione simile all’HTML..tsx). Le definizioni di tipo rafforzano il completamento dell’IDE e ti fanno trovare i bug in anticipo.
Posizione in Laravel
Storia
Il rapporto tra React e Laravel è un po’ più recente rispetto a Vue, ma oggi è del tutto paragonabile. Con Laravel 6 (2019) lo scaffold di autenticazione è stato scorporato nel pacchettolaravel/ui e sono stati offerti scaffold sia per Vue sia per React. All’epoca però Vue era dominante e la presenza di React era limitata.
Con l’aggiunta dello stack Inertia + React a Laravel Breeze (2021) è iniziata un’adozione seria; con il rinnovo degli starter kit di Laravel 12 (2025) React è stato trattato completamente allo stesso livello di Vue (anzi, viene mostrato per primo).
Stile principale attuale: Inertia × React
Il modo principale di usare React in Laravel oggi è Inertia × React. Inertia realizza un’architettura “monolite moderno” in cui puoi passare dati dai controller Laravel direttamente ai componenti React senza progettare un’API.Setup
Tramite starter kit (consigliato)
Per iniziare un nuovo progetto, il modo più semplice è usare lo starter kit.inertiajs/inertia-laravel(adapter lato server)@inertiajs/react(adapter lato client)react+react-dom(React 19)@vitejs/plugin-react(plugin Vite)- TypeScript +
@types/react - Tailwind CSS + libreria di componenti shadcn/ui
- Middleware
HandleInertiaRequests - Schermate di autenticazione (login, registrazione, ecc.) già implementate con Inertia + React + TypeScript
Installazione manuale
Se vuoi aggiungerlo a un progetto esistente, installa separatamente lato server e lato client.vite.config.ts.
resources/js/app.tsx.
Per i dettagli dell’installazione manuale (configurazione del template root, registrazione dei middleware, ecc.) consulta la documentazione ufficiale di Inertia.
Struttura delle directory
Negli starter kit i componenti pagina React vanno nella directoryresources/js/pages/.
Inertia::render('posts/index', [...]), il componente corrispondente è resources/js/pages/posts/index.tsx.
Basi della sintassi JSX
React usa JSX. Ecco i pattern minimi da conoscere per leggere il codice degli starter kit, uno stile in cui si scrive sintassi simile all’HTML dentro JavaScript.{} — espansione di variabile
In JSX si usa {} per incorporare valori o espressioni JavaScript.
Condizionali — && e operatore ternario
React non ha una direttiva equivalente a v-if. Per condizioni semplici si usa l’operatore &&, per if/else l’operatore ternario ? :.
Rendering di liste — .map()
Per il rendering di liste si usa Array.map(). Specifica sempre la prop key per un aggiornamento differenziale efficiente.
v-for :key di Vue e a {#each} di Svelte.
className — nome della classe CSS
Poiché JSX viene compilato in JavaScript, class è una parola riservata. Per le classi CSS si usa className.
Gestori di eventi — camelCase
Gli attributi evento in JSX sono in camelCase e ricevono un riferimento a una funzione.Le basi del componente pagina
I componenti pagina di Inertia sono normali componenti React. I dati passati dal controller Laravel vengono ricevuti come props.Controller
Componente pagina React
Componente Link
Usando il componente <Link> di @inertiajs/react, le transizioni di pagina avvengono via XHR ed eviti il full reload del browser.
<a>, ma dietro le quinte Inertia sostituisce solo il componente di pagina, dando una sensazione da SPA.
Componente Form
Il componente <Form> fornito da @inertiajs/react è lo stile consigliato per l’invio dei form, usato nelle schermate di autenticazione degli starter kit. Specifichi action e method come props e ricevi errors e processing tramite una funzione children (render prop).
Uso di base
<Form> è una funzione ({ errors, processing }) => JSX (pattern render prop). Il componente Form calcola e passa automaticamente questi valori. Ai campi del form si assegna l’attributo nativo HTML name invece di un handler onChange, così la raccolta standard dei dati del browser funziona.
Pattern degli starter kit
Gli starter kit gestiscono le rotte come oggetti tramite Wayfinder.store.form() restituisce un oggetto che contiene action e method dell’oggetto rotta e lo si passa a <Form> con lo spread.
resetOnSuccess vengono ripristinati automaticamente in caso di invio riuscito. Impostalo per campi come la password che vuoi svuotare dopo l’invio.
Se non usi Wayfinder puoi passare direttamente l’URL come
action="/login" e funziona allo stesso modo.Hook useForm
Per la gestione dei form si usa l’hook useForm di @inertiajs/react. Puoi implementare in modo semplice gestione dello stato, invio e visualizzazione degli errori di validazione.
Lato controller
Componente form React
useForm.
Quando arrivano errori di validazione,
useForm mostra gli errori mantenendo i contenuti inseriti.
Dati condivisi (Shared Data)
I dati necessari a tutte le pagine (utente loggato, messaggi flash, ecc.) si definiscono nel metodoshare() del middleware HandleInertiaRequests.
usePage().
Poiché i dati condivisi sono inclusi in ogni richiesta, si consiglia di limitarli allo stretto necessario. Usando valutazioni lazy con
fn(), vengono valutati solo quando ci si accede davvero.Basi degli hook React
Ecco gli hook React essenziali per sviluppare con Inertia × React.useState — gestione dello stato locale
useEffect — gestione degli effetti collaterali
useMemo e useCallback — ottimizzazione delle prestazioni
Supporto TypeScript
Lo starter kit React usa TypeScript di default. Combinandolo con le definizioni di tipo di Inertia puoi garantire la type-safety delle prop.Definizioni di tipo globali
Negli starter kit i tipi dei dati condivisi si definiscono inresources/js/types/index.d.ts.
Uso dei tipi nel componente pagina
Conclusioni
React dà il meglio in combinazione con Laravel, in particolare nella configurazione “monolite moderno” tramite Inertia. È anche molto compatibile con TypeScript e adatto allo sviluppo di applicazioni di grandi dimensioni.
Usando Inertia × React ottieni un’esperienza di sviluppo che combina la semplicità del backend Laravel con il potente ecosistema di React. Creando il progetto tramite starter kit, puoi iniziare subito con schermate di autenticazione incluse.
Documentazione ufficiale di Inertia.js
Per tutte le funzionalità di Inertia v3 consulta la documentazione ufficiale.