译零 TransZero · TanStack Query 中文文档
主站

mutationOptions

更新于 2026-11-02 Vue 查看英文原文 ↗

概述

TypeScript
1function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;2function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: () => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): () => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;3function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;4function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: () => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): () => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;
  • WithRequired<MutationOptions> → WithRequired<MutationOptions>:你通常可以向 mutationOptions 传入所有能传给 useMutation 的参数。此重载要求提供 mutationKey,以便后续(例如通过 useMutationState)查找该修改。
  • () => WithRequired<MutationOptions> → () => WithRequired<MutationOptions>:与带必需 mutationKey 的普通对象重载相同,但适用于闭包中引用响应式状态(即在函数体内读取的 ref)的选项。请将其包裹在 getter 中,以确保 useMutation 及其他使用者始终读取当前值,而非选项创建时捕获的值。
  • Omit<MutationOptions> → Omit<MutationOptions>:你通常可以向 mutationOptions 传入所有能传给 useMutation 的参数。此重载不要求提供 mutationKey——当你无需后续通过 mutationKey 过滤器(例如 useMutationState)定位该修改时,请使用此形式;它仍可通过其他过滤器(例如 status)被观察。
  • () => Omit<MutationOptions> → () => Omit<MutationOptions>:与不带 mutationKey 的普通对象重载相同,但适用于闭包中引用响应式状态(即在函数体内读取的 ref)的选项。请将其包裹在 getter 中,以确保 useMutation 及其他使用者始终读取当前值,而非选项创建时捕获的值。

另请参阅:参数 · 返回值

调用签名

TypeScript
1function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;

定义于:packages/vue-query/src/mutationOptions.ts:36

你通常可以向 mutationOptions 传入所有能传给 useMutation 的参数。此重载要求提供 mutationKey,以便后续(例如通过 useMutationState)查找该修改。

与查询选项中的 queryKey 属性(例如 queryOptions({ queryKey: [...] }))不同,mutationKey 条目若为响应式 getter(() => id.value),则永远不会被解包——存储的是 getter 函数本身,而非其当前值。而 ref 条目仍会按常规方式解包。

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

要使用的修改选项,与传给 useMutation 的选项完全相同,且必须包含 mutationKey。

返回值

WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

原始选项对象,未作任何更改。

参见

使用 useMutation 运行这些选项所描述的修改。

示例

通过 mutationKey 在其他位置查找该修改,例如用于全局“正在保存…”指示器:

HTML
1<script setup lang="ts">2import { mutationOptions, useMutationState } from '@tanstack/vue-query'3import { computed } from 'vue'45const createPostOptions = mutationOptions({6  mutationKey: ['posts', 'create'],7  mutationFn: createPost,8})910// Call `useMutationState` once — it manages its own subscription — then derive from its result.11const creatingPosts = useMutationState({12  filters: { mutationKey: createPostOptions.mutationKey, status: 'pending' },13})14const isCreatingPost = computed(() => creatingPosts.value.length > 0)15</script>

调用签名

TypeScript
1function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: () => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): () => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;

定义于:packages/vue-query/src/mutationOptions.ts:80

与带必需 mutationKey 的普通对象重载相同,但适用于闭包中引用响应式状态(即在函数体内读取的 ref)的选项。请将其包裹在 getter 中,以确保 useMutation 及其他使用者始终读取当前值,而非选项创建时捕获的值。

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

() => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

返回修改选项的函数,必须包含 mutationKey,并在需要时重新求值。

返回值

一个返回相同选项对象(未作任何更改)的函数。

() => WithRequired<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

参见

使用 useMutation 运行这些选项所描述的修改。

示例

HTML
1<script setup lang="ts">2import { mutationOptions, useMutation } from '@tanstack/vue-query'34const props = defineProps<{ userId: number }>()56const createPostOptions = mutationOptions(() => ({7  mutationKey: ['posts', 'create'],8  // Reacts to changes on `props.userId`, unlike the plain-object overload.9  mutationFn: (title: string) => createPost({ title, userId: props.userId }),10}))1112const mutation = useMutation(createPostOptions)13</script>14 15<template>16  <button @click="mutation.mutate('Hello')">Create</button>17</template>

调用签名

TypeScript
1function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;

定义于:packages/vue-query/src/mutationOptions.ts:122

你通常可以向 mutationOptions 传入所有能传给 useMutation 的参数。此重载不要求提供 mutationKey——当你无需后续通过 mutationKey 过滤器(例如 useMutationState)定位该修改时,请使用此形式;它仍可通过其他过滤器(例如 status)被观察。

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

要使用的修改选项,与传给 useMutation 的选项完全相同,且不包含 mutationKey。

返回值

Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

原始选项对象,未作任何更改。

备注

有关通过 useMutationState 查找修改的示例,请参阅其他重载。

参见

使用 useMutation 运行这些选项所描述的修改。

示例

HTML
1<script setup lang="ts">2import { mutationOptions, useMutation } from '@tanstack/vue-query'34const createPostOptions = mutationOptions({5  mutationFn: createPost,6})78const mutation = useMutation(createPostOptions)9</script>10 11<template>12  <button @click="mutation.mutate({ title: 'Hello' })">Create</button>13</template>

调用签名

TypeScript
1function mutationOptions<TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown>(options: () => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): () => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;

定义于:packages/vue-query/src/mutationOptions.ts:165

与不带 mutationKey 的普通对象重载相同,但适用于闭包中引用响应式状态(即在函数体内读取的 ref)的选项。请将其包裹在 getter 中,以确保 useMutation 及其他使用者始终读取当前值,而非选项创建时捕获的值。

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

() => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

返回修改选项的函数,不包含 mutationKey,并在需要时重新求值。

返回值

一个返回相同选项对象(未作任何更改)的函数。

() => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

参见

使用 useMutation 运行这些选项所描述的修改。

示例

HTML
1<script setup lang="ts">2import { mutationOptions, useMutation } from '@tanstack/vue-query'34const props = defineProps<{ userId: number }>()56const createPostOptions = mutationOptions(() => ({7  // Reacts to changes on `props.userId`, unlike the plain-object overload.8  mutationFn: (title: string) => createPost({ title, userId: props.userId }),9}))1011const mutation = useMutation(createPostOptions)12</script>13 14<template>15  <button @click="mutation.mutate('Hello')">Create</button>16</template>

参数

options

() => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

返回修改选项的函数,不包含 mutationKey,并在需要时重新求值。

返回值

一个返回相同选项对象(未作任何更改)的函数。

() => Omit<MutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">

本页为 TanStack Query 文档(Vue 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de