MCPcopy Index your code
hub / github.com/TanStack/router / useMutation

Function useMutation

examples/react/start-supabase-basic/src/hooks/useMutation.ts:3–44  ·  view source on GitHub ↗
(opts: {
  fn: (variables: TVariables) => Promise<TData>
  onSuccess?: (ctx: { data: TData }) => void | Promise<void>
})

Source from the content-addressed store, hash-verified

1import * as React from 'react'
2
3export function useMutation<TVariables, TData, TError = Error>(opts: {
4 fn: (variables: TVariables) => Promise<TData>
5 onSuccess?: (ctx: { data: TData }) => void | Promise<void>
6}) {
7 const [submittedAt, setSubmittedAt] = React.useState<number | undefined>()
8 const [variables, setVariables] = React.useState<TVariables | undefined>()
9 const [error, setError] = React.useState<TError | undefined>()
10 const [data, setData] = React.useState<TData | undefined>()
11 const [status, setStatus] = React.useState<
12 'idle' | 'pending' | 'success' | 'error'
13 >('idle')
14
15 const mutate = React.useCallback(
16 async (variables: TVariables): Promise<TData | undefined> => {
17 setStatus('pending')
18 setSubmittedAt(Date.now())
19 setVariables(variables)
20 //
21 try {
22 const data = await opts.fn(variables)
23 await opts.onSuccess?.({ data })
24 setStatus('success')
25 setError(undefined)
26 setData(data)
27 return data
28 } catch (err) {
29 setStatus('error')
30 setError(err as TError)
31 }
32 },
33 [opts.fn],
34 )
35
36 return {
37 status,
38 variables,
39 submittedAt,
40 mutate,
41 error,
42 data,
43 }
44}

Callers 2

LoginFunction · 0.90
SignupCompFunction · 0.90

Calls 1

onSuccessMethod · 0.80

Tested by

no test coverage detected