TanStackT
TanStack9mo ago
8 replies
brilliant-lime

mutationOptions with queryClient variables type inferrence

i made a wrapper function for mutations that lets you create mutationOptions with queryClient in it that you can use for optimistic queries and invalidation, etc... For some reason it can't infer the variables properly in onMutate, while when i make a wrapper without the queryClient it can:
import type { DefaultError, QueryClient, UseMutationOptions } from "@tanstack/react-query";

import { useQueryClient } from "@tanstack/react-query";

export function mutationOptions<
  TData = unknown,
  TError = DefaultError,
  TVariables = void,
  TContext = unknown,
>(
  options: UseMutationOptions<TData, TError, TVariables, TContext>,
): UseMutationOptions<TData, TError, TVariables, TContext> {
  return options;
}

export function mutationOptionsWithClient<
  TData = unknown,
  TError = DefaultError,
  TVariables = void,
  TContext = unknown,
>(
  getOptions: (queryClient: QueryClient) => UseMutationOptions<TData, TError, TVariables, TContext>,
): UseMutationOptions<TData, TError, TVariables, TContext> {
  // eslint-disable-next-line react-hooks/rules-of-hooks
  const queryClient = useQueryClient();

  return getOptions(queryClient);
}
Was this page helpful?