tRPC 全栈类型安全实践概述tRPC 通过 TypeScript 类型推断在服务端与客户端之间共享契约,无需生成代码或写额外的 API 层。本文基于 v10 稳定 API 展示定义、调用与 SSR 集成。服务端路由定义// server/trpc.ts import { initTRPC } from '@trpc/server' const t = initTRPC.create() export const appRouter = t.router({ hello: t.procedure.query(() => ({ message: 'Hello tRPC' })), add: t.procedure.input(z.object({ a: z.number(), b: z.number() })).mutation(({ input }) => ({ sum: input.a + input.b })), }) export type AppRouter = typeof appRouter Next.js 客户端集成// utils/trpc.ts import { createTRPCReact } from '@trpc/react-query' import type { AppRouter } from '../server/trpc' export const trpc = createTRPCReact<AppRouter>() // app/page.tsx(客户端组件片段) import { trpc } from './utils/trpc' export default function Page() { const hello = trpc.hello.useQuery() const add = trpc.add.useMutation() return ( <div> <p>{hello.data?.message}</p> <button onClick={() => add.mutate({ a: 1, b: 2 })}>Add</button> </div> ) } 服务器端直接调用(SSR)// server/caller.ts import { appRouter } from './trpc' export const caller = appRouter.createCaller({ /* 上下文 */ }) const data = await caller.hello() 验证要点API 与用法基于 v10 稳定版本;类型推断贯穿服务端/客户端调用。在 SSR/客户端均可一致运行,避免额外的代码生成步骤与维护成本。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部