Konfigurera React Query-integreringen
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
1. Installera beroenden
Följande beroenden bör installeras.
- npm
- yarn
- pnpm
- bun
- deno
npm install @trpc/server @trpc/client @trpc/react-query @tanstack/react-query
yarn add @trpc/server @trpc/client @trpc/react-query @tanstack/react-query
pnpm add @trpc/server @trpc/client @trpc/react-query @tanstack/react-query
bun add @trpc/server @trpc/client @trpc/react-query @tanstack/react-query
deno add npm:@trpc/server npm:@trpc/client npm:@trpc/react-query npm:@tanstack/react-query
Om du använder en AI-kodningsagent, installera tRPC-färdigheter för bättre kodgenerering:
bashnpx @tanstack/intent@latest install
bashnpx @tanstack/intent@latest install
2. Importera din AppRouter
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Importera din AppRouter-typ till klientapplikationen. Den här typen beskriver strukturen för hela ditt API.
utils/trpc.tstsimport type { AppRouter } from '../server/router';
utils/trpc.tstsimport type { AppRouter } from '../server/router';
Genom att använda import type säkerställer du att referensen tas bort vid kompilering, vilket innebär att du inte av misstag importerar serverkod till din klient. För mer information, se dokumentationen för TypeScript.
3. Skapa tRPC-hooks
Skapa en uppsättning starkt typade React-hooks från din AppRouter-typsignatur med createTRPCReact.
utils/trpc.tstsimport {createTR PCReact } from '@trpc/react-query';importtype { AppRouter } from '../server/router'; export const trpc = createTRPCReact<AppRouter>();
utils/trpc.tstsimport {createTR PCReact } from '@trpc/react-query';importtype { AppRouter } from '../server/router'; export const trpc = createTRPCReact<AppRouter>();
4. Lägg till tRPC-providers
Skapa en tRPC-klient och omslut din applikation med tRPC Provider enligt nedan. Du behöver också konfigurera och ansluta React Query, vilket dokumenteras mer ingående i deras dokumentation.
Om du redan använder React Query i din applikation bör du återanvända din befintliga QueryClient och QueryClientProvider.
App.tsxtsximport {QueryCli ent, QueryClientProvider } from '@tanstack/react-query';import{ httpBatchLink } from '@trpc/client'; importReact, { useState } from 'react'; import { trpc } from './utils/trpc';exportfunction App() { const [queryClient] = useState (() => new QueryClient()); const [trpcClient] = useState(() =>trpc.createClient({ links: [httpBatchLink({url: 'http://localhost:3000/trpc',// You can pass any HTTP headers you wish hereasync headers() {return {authorization: getAuthCookie(),};},}),],}),);return (<trpc.Provider client={trpcClient} queryClient={queryClient}><QueryClientProvider client={queryClient}>{/* Your app here */}</QueryClientProvider> </trpc.Provider>);}
App.tsxtsximport {QueryCli ent, QueryClientProvider } from '@tanstack/react-query';import{ httpBatchLink } from '@trpc/client'; importReact, { useState } from 'react'; import { trpc } from './utils/trpc';exportfunction App() { const [queryClient] = useState (() => new QueryClient()); const [trpcClient] = useState(() =>trpc.createClient({ links: [httpBatchLink({url: 'http://localhost:3000/trpc',// You can pass any HTTP headers you wish hereasync headers() {return {authorization: getAuthCookie(),};},}),],}),);return (<trpc.Provider client={trpcClient} queryClient={queryClient}><QueryClientProvider client={queryClient}>{/* Your app here */}</QueryClientProvider> </trpc.Provider>);}
Anledningen till att använda useState när du skapar queryClient och TRPCClient, istället för att deklarera dem utanför komponenten, är för att säkerställa att varje förfrågan får en unik klient vid SSR (Server-Side Rendering). Om du använder klientrendering (CSR) kan du flytta dem om du önskar.
5. Hämta data
Du kan nu använda tRPC:s React Query-integration för att anropa queries och mutations mot ditt API.
pages/IndexPage.tsxtsximport { trpc } from '../utils/trpc';exportdefault function IndexPage() { const userQuery = trpc.getUser.useQuery({ id: 'id_bilbo' });constuserCreator = trpc.createUser.useMutation(); return (<div><p>{userQuery.data?.name}</p><button onClick={() => userCreator.mutate({ name: 'Frodo' })}>Create Frodo</button></div>);}
pages/IndexPage.tsxtsximport { trpc } from '../utils/trpc';exportdefault function IndexPage() { const userQuery = trpc.getUser.useQuery({ id: 'id_bilbo' });constuserCreator = trpc.createUser.useMutation(); return (<div><p>{userQuery.data?.name}</p> <button onClick={() => userCreator.mutate({ name: 'Frodo' })}>Create Frodo</button></div>);}