Skip to content

useMutation

useMutation<TData, TVariables>(client, path, options?): UseMutationState<TData, TVariables>

Defined in: packages/fetch-kit/src/react/use-mutation.ts:55

React hook for imperative mutations (POST, PUT, PATCH, DELETE).

Unlike useFetch, mutations do not run on mount. The returned mutate function accepts variables (typically the request body) and returns a promise resolving to the response data, allowing both imperative and declarative use.

TData = unknown

Response type

TVariables = unknown

Variables passed to mutate (usually the body)

Client

string

UseMutationOptions<TData, TVariables> = {}

UseMutationState<TData, TVariables>

const { mutate, loading, error } = useMutation<User, NewUser>(
api,
"/users",
{
method: "POST",
onSuccess: (user, variables) => router.push(`/users/${user.id}`),
}
);
<button onClick={() => mutate({ name, email })} disabled={loading}>
Create
</button>