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

Function useMutation

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

Source from the content-addressed store, hash-verified

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

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