Aller au contenu principal
Version : 11.x

getQueryKey

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Nous fournissons un helper getQueryKey qui accepte un router ou une procedure pour vous permettre d'attribuer facilement la clé de requête correcte à la fonction native.

tsx
// Queries
declare function getQueryKey(
procedure: AnyQueryProcedure,
input?: DeepPartial<TInput>,
type?: QueryType, /** @default 'any' */
): TRPCQueryKey;
 
// Routers
declare function getQueryKey(
router: AnyRouter,
): TRPCQueryKey;
 
type QueryType = "query" | "infinite" | "any";
// for useQuery ──┘ │ │
// for useInfiniteQuery ────┘ │
// will match all ───────────────────────┘
tsx
// Queries
declare function getQueryKey(
procedure: AnyQueryProcedure,
input?: DeepPartial<TInput>,
type?: QueryType, /** @default 'any' */
): TRPCQueryKey;
 
// Routers
declare function getQueryKey(
router: AnyRouter,
): TRPCQueryKey;
 
type QueryType = "query" | "infinite" | "any";
// for useQuery ──┘ │ │
// for useInfiniteQuery ────┘ │
// will match all ───────────────────────┘
note

Le type de requête any correspondra à toutes les requêtes du cache uniquement si la méthode react query utilisée implémente le floutage de correspondance. Consultez TanStack/query#5111 (comment) pour plus de contexte.

tsx
import { useIsFetching, useQueryClient } from '@tanstack/react-query';
import { getQueryKey } from '@trpc/react-query';
import { trpc } from './utils/trpc';
 
function MyComponent() {
const queryClient = useQueryClient();
 
const posts = trpc.post.list.useQuery();
 
// See if a query is fetching
const postListKey = getQueryKey(trpc.post.list, undefined, 'query');
const isFetching = useIsFetching({ queryKey: postListKey });
 
// Set some query defaults for an entire router
const postKey = getQueryKey(trpc.post);
queryClient.setQueryDefaults(postKey, { staleTime: 30 * 60 * 1000 });
 
// ...
}
tsx
import { useIsFetching, useQueryClient } from '@tanstack/react-query';
import { getQueryKey } from '@trpc/react-query';
import { trpc } from './utils/trpc';
 
function MyComponent() {
const queryClient = useQueryClient();
 
const posts = trpc.post.list.useQuery();
 
// See if a query is fetching
const postListKey = getQueryKey(trpc.post.list, undefined, 'query');
const isFetching = useIsFetching({ queryKey: postListKey });
 
// Set some query defaults for an entire router
const postKey = getQueryKey(trpc.post);
queryClient.setQueryDefaults(postKey, { staleTime: 30 * 60 * 1000 });
 
// ...
}

Mutations

À l'instar des requêtes, nous fournissons un getMutationKey pour les mutations. La fonction sous-jacente est identique à getQueryKey (techniquement, vous pourriez utiliser getQueryKey pour les mutations), la seule différence étant sémantique.

tsx
import { getMutationKey } from '@trpc/react-query';
const mutationKey = getMutationKey(trpc.user.create);
tsx
import { getMutationKey } from '@trpc/react-query';
const mutationKey = getMutationKey(trpc.user.create);