MCPcopy Create free account
hub / github.com/TanStack/query / useMutation

Function useMutation

packages/preact-query/src/useMutation.ts:20–69  ·  view source on GitHub ↗
(
  options: UseMutationOptions<TData, TError, TVariables, TOnMutateResult>,
  queryClient?: QueryClient,
)

Source from the content-addressed store, hash-verified

18// HOOK
19
20export function useMutation<
21 TData = unknown,
22 TError = DefaultError,
23 TVariables = void,
24 TOnMutateResult = unknown,
25>(
26 options: UseMutationOptions<TData, TError, TVariables, TOnMutateResult>,
27 queryClient?: QueryClient,
28): UseMutationResult<TData, TError, TVariables, TOnMutateResult> {
29 const client = useQueryClient(queryClient)
30
31 const [observer] = useState(
32 () =>
33 new MutationObserver<TData, TError, TVariables, TOnMutateResult>(
34 client,
35 options,
36 ),
37 )
38
39 useEffect(() => {
40 observer.setOptions(options)
41 }, [observer, options])
42
43 const result = useSyncExternalStore(
44 useCallback(
45 (onStoreChange) =>
46 observer.subscribe(notifyManager.batchCalls(onStoreChange)),
47 [observer],
48 ),
49 () => observer.getCurrentResult(),
50 )
51
52 const mutate = useCallback<
53 UseMutateFunction<TData, TError, TVariables, TOnMutateResult>
54 >(
55 (variables, mutateOptions) => {
56 observer.mutate(variables, mutateOptions).catch(noop)
57 },
58 [observer],
59 )
60
61 if (
62 result.error &&
63 shouldThrowError(observer.options.throwOnError, [result.error])
64 ) {
65 throw result.error
66 }
67
68 return { ...result, mutate, mutateAsync: result.mutate }
69}

Callers 9

MutationsFunction · 0.50
PageFunction · 0.50
MutateFunction · 0.50
PageFunction · 0.50
MutatesFunction · 0.50
ComponentFunction · 0.50
MutationFunction · 0.50

Calls 7

useQueryClientFunction · 0.90
useSyncExternalStoreFunction · 0.90
shouldThrowErrorFunction · 0.90
setOptionsMethod · 0.45
subscribeMethod · 0.45
getCurrentResultMethod · 0.45
mutateMethod · 0.45

Tested by 7

MutationsFunction · 0.40
PageFunction · 0.40
MutateFunction · 0.40
PageFunction · 0.40
MutatesFunction · 0.40
ComponentFunction · 0.40
MutationFunction · 0.40