Combinación de Routers
Traducción Beta No Oficial
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Escribir todo el código de la API en el mismo archivo puede volverse engorroso. Es fácil combinar routers para dividirlos en partes manejables.
Combinación con routers hijos
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({list :publicProcedure .query (() => {// [..]return [];}),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({list :publicProcedure .query (() => {// [..]return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({create :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),list :publicProcedure .query (() => {// ...return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({create :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),list :publicProcedure .query (() => {// ...return [];}),});
routers/_app.tstsimport {router } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =router ({user :userRouter ,post :postRouter ,});appRouter .user appRouter .post export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {router } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =router ({user :userRouter ,post :postRouter ,});appRouter .user appRouter .post export typeAppRouter = typeofappRouter ;
Combinación con t.mergeRouters
Si prefieres tener todos los procedimientos en un único espacio de nombres plano, puedes usar t.mergeRouters
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({userList :publicProcedure .query (() => {// [..]return [];}),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({userList :publicProcedure .query (() => {// [..]return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({postCreate :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),postList :publicProcedure .query (() => {// ...return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({postCreate :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),postList :publicProcedure .query (() => {// ...return [];}),});
routers/_app.tstsimport {mergeRouters } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =mergeRouters (userRouter ,postRouter );export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {mergeRouters } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =mergeRouters (userRouter ,postRouter );export typeAppRouter = typeofappRouter ;
Carga dinámica de routers
Puedes usar la función lazy para cargar tus routers dinámicamente. Esto resulta útil para reducir los arranques en frío de tu aplicación. No hay diferencia en cómo usas el router después de su carga diferida frente a cómo usas un router normal.
routers/greeting.tstsimport {router ,publicProcedure } from '../trpc';export constgreetingRouter =router ({hello :publicProcedure .query (() => 'world'),});
routers/greeting.tstsimport {router ,publicProcedure } from '../trpc';export constgreetingRouter =router ({hello :publicProcedure .query (() => 'world'),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';export constuserRouter =router ({list :publicProcedure .query (() => ['John', 'Jane', 'Jim']),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';export constuserRouter =router ({list :publicProcedure .query (() => ['John', 'Jane', 'Jim']),});
routers/_app.tstsimport {lazy } from '@trpc/server';import {router } from '../trpc';export constappRouter =router ({// Option 1: Short-hand when the module has exactly 1 router exportedgreeting :lazy (() => import('./greeting.js')),// Option 2: if exporting more than 1 routeruser :lazy (() => import('./user.js').then ((m ) =>m .userRouter )),});export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {lazy } from '@trpc/server';import {router } from '../trpc';export constappRouter =router ({// Option 1: Short-hand when the module has exactly 1 router exportedgreeting :lazy (() => import('./greeting.js')),// Option 2: if exporting more than 1 routeruser :lazy (() => import('./user.js').then ((m ) =>m .userRouter )),});export typeAppRouter = typeofappRouter ;