Configurare tRPC con React e Next.js
Configurare un router tRPC, le procedure e l'adapter client React in un progetto Next.js con App Router
Configurare tRPC con React e Next.js è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Installazione delle dipendenze di tRPC
Installi @trpc/server e @trpc/client per i pacchetti principali di tRPC. Aggiunga @trpc/react-query per l'adapter degli hook React e @tanstack/react-query come peer dependency che fornisce la funzionalità agli hook.
Per l'integrazione delle API route di Next.js non è necessario alcun pacchetto adapter aggiuntivo nelle versioni recenti di tRPC.
Inizializzazione di tRPC sul server
Crei un file server/trpc.ts e chiami initTRPC.create() per ottenere l'oggetto t. Esporti t.router come router, t.procedure come publicProcedure e t.mergeRouters come utility.
La factory initTRPC accetta un generico del tipo context che definisce quali dati sono disponibili nell'argomento ctx di ogni procedura.
Definizione della prima procedura
Una procedura si definisce concatenando .input(zodSchema).query(handler) oppure .mutation(handler) a publicProcedure. Per un semplice endpoint hello: publicProcedure.input(z.object({ name: z.string() })).query(({ input }) => "Hello " + input.name).
Lo schema Zod fornisce sia i tipi TypeScript sia la validazione a runtime dell'input.
Creazione dell'App Router
Crei un appRouter usando la funzione router(): router({ hello: helloHandler, users: usersRouter }). I router annidati consentono di organizzare le procedure per dominio (users, posts, comments) in file separati.
Esporti il tipo AppRouter: export type AppRouter = typeof appRouter. È questo il tipo che il client importerà.
Gestore della route API di Next.js
Crei app/api/trpc/[trpc]/route.ts (App Router) oppure pages/api/trpc/[trpc].ts (Pages Router). Usi fetchRequestHandler da @trpc/server/adapters/fetch per gestire tutte le richieste tRPC tramite questa singola route catch-all.
Passi a fetchRequestHandler il router, la funzione createContext e gli oggetti request/response.
Creazione del client tRPC per React
Crei un file utils/trpc.ts. Chiami createTRPCReact
L'import del tipo AppRouter proviene dal file del server; TypeScript segue la catena di importazioni per convalidare tutti gli utilizzi.
Configurazione di QueryClient e TRPCProvider
Nel layout dell'applicazione o in _app.tsx, crei un'istanza di QueryClient e un'istanza del client tRPC usando trpc.createClient({ links: [httpBatchLink({ url: '/api/trpc' })] }).
Avvolga l'albero dei componenti in trpc.Provider (con il client trpc) e in QueryClientProvider (con il QueryClient). Sono necessari entrambi i provider.
Esecuzione della prima query tRPC
In qualsiasi componente: const { data, isLoading, error } = trpc.hello.useQuery({ name: 'World' }). L'hook è completamente tipizzato: data è il tipo restituito inferito della procedura hello e l'oggetto input viene verificato rispetto allo schema Zod.
Passare un tipo di input errato genera un errore di compilazione TypeScript, non un errore a runtime.
Project References di TypeScript
Per funzionare, tRPC deve poter importare i tipi dal file del server. In un progetto Next.js, il codice del server e quello del client condividono la stessa compilazione TypeScript, quindi gli import funzionano senza altre configurazioni.
In un monorepo con pacchetti separati, configuri i project references di TypeScript o gli alias dei percorsi in tsconfig.json in modo che puntino al pacchetto del server.
Differenze tra gli ambienti
Il gestore tRPC viene eseguito sul server, come API route o Edge Function di Next.js. Il client tRPC viene eseguito nel browser. TypeScript valuta gli import a livello di tipo durante la compilazione senza eseguire il codice del server nel browser.
Sul client viene importato solo il tipo AppRouter, non l'implementazione effettiva, quindi i segreti del server non finiscono nel bundle del client.
Verifica della configurazione
Avvii il server di sviluppo Next.js e apra la console del browser. La chiamata trpc.hello.useQuery dovrebbe registrare la risposta del server. Controlli la scheda Network per vedere la richiesta HTTP a /api/trpc/hello, con l'input incluso come parametro di query.
Per impostazione predefinita, httpBatchLink combina più richieste concorrenti in un'unica chiamata HTTP, visibile nel grafico delle richieste di rete.
Configurazione del router del server tRPC
Quale funzione inizializza l'istanza tRPC e fornisce le factory per router e procedure?
Riepilogo della lezione
Installi @trpc/server, @trpc/client, @trpc/react-query e @tanstack/react-query. Inizializzi tRPC con initTRPC.create(), definisca le procedure ed esporti il tipo AppRouter. Crei la route catch-all delle API di Next.js, configuri TRPCProvider e QueryClientProvider, quindi chiami le procedure con trpc.procedureName.useQuery().
TypeScript applica l'intero contratto tra client e server durante la compilazione, senza generare codice.
Domande Frequenti
La lezione «Configurare tRPC con React e Next.js» è gratuita?
Sì — il testo completo di «Configurare tRPC con React e Next.js» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Configurare tRPC con React e Next.js»?
Configurare un router tRPC, le procedure e l'adapter client React in un progetto Next.js con App Router Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Configurare tRPC con React e Next.js»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il problema risolto da tRPC
- Configurare tRPC con React e Next.js
- Query, mutation e subscription
- Integrare tRPC con React Query e autenticazione