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 måste installeras
- npm
- yarn
- pnpm
- bun
bashnpm install @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashnpm install @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashyarn add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashyarn add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashpnpm add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashpnpm add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashbun add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
bashbun add @trpc/client @trpc/server @trpc/react-query @tanstack/react-query@4
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.
tsimport type {AppRouter } from '../server/router';
tsimport 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 {createTRPCReact } from '@trpc/react-query';import type {AppRouter } from '../server/router';export consttrpc =createTRPCReact <AppRouter >();
utils/trpc.tstsimport {createTRPCReact } from '@trpc/react-query';import type {AppRouter } from '../server/router';export consttrpc =createTRPCReact <AppRouter >();
4. Lägg till tRPC-providers
Skapa en tRPC-klient och sätt in din applikation i tRPC-Providern enligt nedan. Du måste också konfigurera och ansluta React Query, vilket de dokumenterar mer ingående.
Om du redan använder React Query i din applikation bör du återanvända din befintliga QueryClient och QueryClientProvider.
App.tsxtsximport { QueryClient, QueryClientProvider } from '@tanstack/react-query';import { httpBatchLink } from '@trpc/client';import React, { useState } from 'react';import { trpc } from './utils/trpc';export function 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 { QueryClient, QueryClientProvider } from '@tanstack/react-query';import { httpBatchLink } from '@trpc/client';import React, { useState } from 'react';import { trpc } from './utils/trpc';export function 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';export default function IndexPage() {const userQuery= trpc.getUser.useQuery({ id: 'id_bilbo' }); const userCreator = 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';export default function IndexPage() {const userQuery= trpc.getUser.useQuery({ id: 'id_bilbo' }); const userCreator = trpc.createUser.useMutation();return (<div><p>{userQuery.data?.name}</p><button onClick={() => userCreator.mutate ({ name: 'Frodo' })}> Create Frodo</button></div>);}