useQuery()
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Hookarna som tillhandahålls av @trpc/react-query är ett tunt lager ovanpå @tanstack/react-query. För djupgående information om alternativ och användningsmönster, se deras dokumentation om frågor.
tsxfunction useQuery(input: TInput,opts?: UseTRPCQueryOptions;)interface UseTRPCQueryOptionsextends UseQueryOptions {trpc: {ssr?: boolean;abortOnUnmount?: boolean;context?: Record<string, unknown>;}}
tsxfunction useQuery(input: TInput,opts?: UseTRPCQueryOptions;)interface UseTRPCQueryOptionsextends UseQueryOptions {trpc: {ssr?: boolean;abortOnUnmount?: boolean;context?: Record<string, unknown>;}}
Eftersom UseTRPCQueryOptions utökar @tanstack/react-query's UseQueryOptions, kan du använda vilka som helst av deras alternativ här som t.ex. enabled, refetchOnWindowFocus, etc. Vi har också några trpc-specifika alternativ som låter dig välja in eller ut ur vissa beteenden på per-procedure-nivå:
-
trpc.ssr: Om du harssr: truei din globala konfiguration kan du sätta detta till false för att inaktivera SSR för denna specifika fråga. Observera att detta inte fungerar åt andra hållet - du kan inte aktivera SSR på en procedure om din globala konfiguration är satt till false. -
trpc.abortOnUnmount: Åsidosätt den globala konfigurationen och välj om frågor ska avbrytas vid avmontering. -
trpc.context: Lägg till extra metadata som kan användas i Länkar.
Om du behöver sätta några alternativ men inte vill skicka någon input, kan du skicka undefined istället.
Du kommer att märka att du får autofyllning på input baserat på vad du har satt i ditt input-schema på backend:en.
Exempel
Backend code
server/routers/_app.tstsximport { initTRPC } from '@trpc/server';import { z } from 'zod';export const t = initTRPC.create();export const appRouter = t.router({// Create procedure at path 'hello'hello: t.procedure// using zod schema to validate and infer input values.input(z.object({text: z.string().nullish(),}).nullish(),).query((opts) => {return {greeting: `hello ${opts.input?.text ?? 'world'}`,};}),});
server/routers/_app.tstsximport { initTRPC } from '@trpc/server';import { z } from 'zod';export const t = initTRPC.create();export const appRouter = t.router({// Create procedure at path 'hello'hello: t.procedure// using zod schema to validate and infer input values.input(z.object({text: z.string().nullish(),}).nullish(),).query((opts) => {return {greeting: `hello ${opts.input?.text ?? 'world'}`,};}),});
components/MyComponent.tsxtsximport { trpc } from '../utils/trpc';export function MyComponent() {// input is optional, so we don't have to pass second argumentconst helloNoArgs = trpc.hello.useQuery();const helloWithArgs = trpc.hello.useQuery({ text: 'client' });return (<div><h1>Hello World Example</h1><ul><li>helloNoArgs ({helloNoArgs.status}):{' '}<pre>{JSON.stringify(helloNoArgs.data, null, 2)}</pre></li><li>helloWithArgs ({helloWithArgs.status}):{' '}<pre>{JSON.stringify(helloWithArgs.data, null, 2)}</pre></li></ul></div>);}
components/MyComponent.tsxtsximport { trpc } from '../utils/trpc';export function MyComponent() {// input is optional, so we don't have to pass second argumentconst helloNoArgs = trpc.hello.useQuery();const helloWithArgs = trpc.hello.useQuery({ text: 'client' });return (<div><h1>Hello World Example</h1><ul><li>helloNoArgs ({helloNoArgs.status}):{' '}<pre>{JSON.stringify(helloNoArgs.data, null, 2)}</pre></li><li>helloWithArgs ({helloWithArgs.status}):{' '}<pre>{JSON.stringify(helloWithArgs.data, null, 2)}</pre></li></ul></div>);}