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

Function useMutation

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

Source from the content-addressed store, hash-verified

188 * ```
189 */
190export function useMutation<
191 TData = unknown,
192 TError = DefaultError,
193 TVariables = void,
194 TOnMutateResult = unknown,
195>(
196 options: UseMutationOptions<TData, TError, TVariables, TOnMutateResult>,
197 queryClient?: QueryClient,
198): UseMutationResult<TData, TError, TVariables, TOnMutateResult> {
199 const client = useQueryClient(queryClient)
200
201 const [observer] = useState(
202 () =>
203 new MutationObserver<TData, TError, TVariables, TOnMutateResult>(
204 client,
205 options,
206 ),
207 )
208
209 useEffect(() => {
210 observer.setOptions(options)
211 }, [observer, options])
212
213 const result = useSyncExternalStore(
214 useCallback(
215 (onStoreChange) =>
216 observer.subscribe(notifyManager.batchCalls(onStoreChange)),
217 [observer],
218 ),
219 () => observer.getCurrentResult(),
220 )
221
222 const mutate = useCallback<
223 UseMutateFunction<TData, TError, TVariables, TOnMutateResult>
224 >(
225 (
226 ...args: Parameters<
227 UseMutateFunction<TData, TError, TVariables, TOnMutateResult>
228 >
229 ) => {
230 observer.mutate(args[0] as TVariables, args[1]).catch(noop)
231 },
232 [observer],
233 )
234
235 if (
236 result.error &&
237 shouldThrowError(observer.options.throwOnError, [result.error])
238 ) {
239 throw result.error
240 }
241
242 return { ...result, mutate, mutateAsync: result.mutate }
243}

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