0Pricing
React Academy · Lección

Configurar tRPC con React y Next.js

Configurar un router de tRPC, sus procedures y el adaptador de cliente para React en un proyecto de Next.js con App Router

Configurar tRPC con React y Next.js es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Instalación de las dependencias de tRPC

Instale @trpc/server y @trpc/client para obtener los paquetes principales de tRPC. Añada @trpc/react-query para el adaptador de hooks de React y @tanstack/react-query como dependencia peer que proporciona la funcionalidad de los hooks.

Para integrar rutas de API de Next.js, en las versiones recientes de tRPC no se necesita ningún paquete de adaptador adicional.

Inicialización de tRPC en el servidor

Cree un archivo server/trpc.ts y llame a initTRPC.create() para obtener el objeto t. Exporte t.router como router, t.procedure como publicProcedure y t.mergeRouters como utilidad.

La fábrica initTRPC acepta un genérico de tipo de contexto que define qué datos están disponibles en el argumento ctx de cada procedimiento.

Definición del primer procedimiento

Un procedimiento se define encadenando .input(zodSchema).query(handler) o .mutation(handler) a publicProcedure. Para obtener un endpoint hello sencillo: publicProcedure.input(z.object({ name: z.string() })).query(({ input }) => "Hello " + input.name).

El esquema de Zod proporciona tanto los tipos de TypeScript como la validación en tiempo de ejecución para la entrada.

Construcción del App Router

Cree un appRouter mediante la función router(): router({ hello: helloHandler, users: usersRouter }). Los routers anidados le permiten organizar los procedimientos por dominio (users, posts, comments) en archivos separados.

Exporte el tipo AppRouter: export type AppRouter = typeof appRouter. Este es el tipo que importará el cliente.

Manejador de rutas de API de Next.js

Cree app/api/trpc/[trpc]/route.ts (App Router) o pages/api/trpc/[trpc].ts (Pages Router). Use fetchRequestHandler de @trpc/server/adapters/fetch para gestionar todas las solicitudes de tRPC mediante esta única ruta que captura cualquier solicitud.

Pase el router, la función createContext y los objetos de solicitud y respuesta a fetchRequestHandler.

Creación del cliente de tRPC para React

Cree un archivo utils/trpc.ts. Llame a createTRPCReact() para crear el objeto de cliente trpc con tipos. Este objeto tiene una propiedad por cada procedimiento de su router y cada una expone hooks de React Query.

La importación del tipo AppRouter procede de su archivo del servidor; TypeScript sigue la cadena de importaciones para validar todos los usos.

Configuración de QueryClient y TRPCProvider

En el layout de su aplicación o en _app.tsx, cree una instancia de QueryClient y una instancia del cliente de tRPC mediante trpc.createClient({ links: [httpBatchLink({ url: '/api/trpc' })] }).

Envuelva el árbol de componentes en trpc.Provider (con el cliente de trpc) y QueryClientProvider (con QueryClient). Ambos proveedores son necesarios.

Realización de la primera consulta de tRPC

En cualquier componente: const { data, isLoading, error } = trpc.hello.useQuery({ name: 'World' }). El hook tiene tipos completos: data es el tipo de retorno inferido del procedimiento hello y el objeto de entrada se comprueba según el esquema de Zod.

Pasar un tipo de entrada incorrecto provoca un error de compilación de TypeScript, no un error en tiempo de ejecución.

Referencias de proyectos de TypeScript

Para que tRPC funcione, el cliente debe poder importar tipos desde el archivo del servidor. En un proyecto de Next.js, el código del servidor y del cliente comparte la misma compilación de TypeScript, por lo que las importaciones funcionan directamente.

En un monorepo con paquetes separados, configure referencias de proyectos de TypeScript o alias de rutas en tsconfig.json para apuntar al paquete del servidor.

Diferencias entre entornos

El handler de tRPC se ejecuta en el servidor (como una ruta de API de Next.js o una Edge Function). El cliente de tRPC se ejecuta en el navegador. TypeScript evalúa las importaciones de tipos durante la compilación sin ejecutar código del servidor en el navegador.

En el cliente solo se importa el tipo AppRouter, no la implementación real, por lo que ningún secreto del servidor se filtra al bundle del cliente.

Prueba de la configuración

Inicie el servidor de desarrollo de Next.js y abra la consola del navegador. La llamada trpc.hello.useQuery debe registrar la respuesta del servidor. Consulte la pestaña Network para ver la solicitud HTTP a /api/trpc/hello, con la entrada agrupada como parámetro de consulta.

De forma predeterminada, httpBatchLink combina varias solicitudes simultáneas en una sola llamada HTTP, algo visible en la cascada de red.

Configuración del router del servidor de tRPC

¿Qué función inicializa la instancia de tRPC y proporciona las fábricas de routers y procedimientos?

Resumen de la lección

Instale @trpc/server, @trpc/client, @trpc/react-query y @tanstack/react-query. Inicialice tRPC con initTRPC.create(), defina los procedimientos y exporte el tipo AppRouter. Cree la ruta de API catch-all de Next.js, configure TRPCProvider y QueryClientProvider y, después, llame a los procedimientos con trpc.procedureName.useQuery().

TypeScript impone todo el contrato entre el cliente y el servidor durante la compilación, sin generar código.

Preguntas frecuentes

¿La lección «Configurar tRPC con React y Next.js» es gratis?

Sí — el texto completo de «Configurar tRPC con React y Next.js» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Configurar tRPC con React y Next.js»?

Configurar un router de tRPC, sus procedures y el adaptador de cliente para React en un proyecto de Next.js con App Router Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Configurar tRPC con React y Next.js»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El problema que resuelve tRPC
  2. Configurar tRPC con React y Next.js
  3. Queries, mutaciones y suscripciones
  4. Integración de tRPC con React Query y autenticación
← Volver a React Academy