function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;Defined in: vue-query/src/mutationOptions.ts:34
You can generally pass everything to mutationOptions that you can also pass to useMutation. A mutationKey is required on this overload so the mutation can be looked up later, e.g. with useMutationState.
TData = unknown
TError = Error
TVariables = void
TOnMutateResult = unknown
WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The mutation options to use, identical to what you'd pass to useMutation, with a required mutationKey.
WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The same options object, unchanged.
useMutation to run the mutation these options describe.
Looking the mutation up elsewhere via its mutationKey, e.g. for a global "saving…" indicator:
<script setup lang="ts">
import { mutationOptions, useMutationState } from '@tanstack/vue-query'
import { computed } from 'vue'
const createPostOptions = mutationOptions({
mutationKey: ['posts', 'create'],
mutationFn: createPost,
})
// Call `useMutationState` once — it manages its own subscription — then derive from its result.
const creatingPosts = useMutationState({
filters: { mutationKey: createPostOptions.mutationKey, status: 'pending' },
})
const isCreatingPost = computed(() => creatingPosts.value.length > 0)
</script>function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): () => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;Defined in: vue-query/src/mutationOptions.ts:80
Same as the plain-object overload with a required mutationKey, but for options that close over reactive state (refs read inside the function body). Wrap them in a getter so useMutation and the other consumers always read the current values instead of the ones captured when the options were created.
TData = unknown
TError = Error
TVariables = void
TOnMutateResult = unknown
() => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
A function returning the mutation options to use, with a required mutationKey, re-evaluated on demand.
A function that returns the same options object, unchanged.
(): WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
useMutation to run the mutation these options describe.
<script setup lang="ts">
import { mutationOptions, useMutation } from '@tanstack/vue-query'
const props = defineProps<{ userId: number }>()
const createPostOptions = mutationOptions(() => ({
mutationKey: ['posts', 'create'],
// Reacts to changes on `props.userId`, unlike the plain-object overload.
mutationFn: (title: string) => createPost({ title, userId: props.userId }),
}))
const mutation = useMutation(createPostOptions)
</script>
<template>
<button @click="mutation.mutate('Hello')">Create</button>
</template>function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;Defined in: vue-query/src/mutationOptions.ts:124
You can generally pass everything to mutationOptions that you can also pass to useMutation. No mutationKey is required on this overload — use this when you don't need to target the mutation via a mutationKey filter later (e.g. with useMutationState); it can still be observed through other filters, such as status.
TData = unknown
TError = Error
TVariables = void
TOnMutateResult = unknown
Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The mutation options to use, identical to what you'd pass to useMutation, without a mutationKey.
Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The same options object, unchanged.
useMutation to run the mutation these options describe.
See the other overload's example for looking a mutation up via useMutationState.
<script setup lang="ts">
import { mutationOptions, useMutation } from '@tanstack/vue-query'
const createPostOptions = mutationOptions({
mutationFn: createPost,
})
const mutation = useMutation(createPostOptions)
</script>
<template>
<button @click="mutation.mutate({ title: 'Hello' })">Create</button>
</template>function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): () => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;Defined in: vue-query/src/mutationOptions.ts:169
Same as the plain-object overload without a mutationKey, but for options that close over reactive state (refs read inside the function body). Wrap them in a getter so useMutation and the other consumers always read the current values instead of the ones captured when the options were created.
TData = unknown
TError = Error
TVariables = void
TOnMutateResult = unknown
() => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
A function returning the mutation options to use, without a mutationKey, re-evaluated on demand.
A function that returns the same options object, unchanged.
(): Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
useMutation to run the mutation these options describe.
<script setup lang="ts">
import { mutationOptions, useMutation } from '@tanstack/vue-query'
const props = defineProps<{ userId: number }>()
const createPostOptions = mutationOptions(() => ({
// Reacts to changes on `props.userId`, unlike the plain-object overload.
mutationFn: (title: string) => createPost({ title, userId: props.userId }),
}))
const mutation = useMutation(createPostOptions)
</script>
<template>
<button @click="mutation.mutate('Hello')">Create</button>
</template>