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

mutationOptions

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

概述

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

另请参阅:参数 · 返回值

调用签名

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

定义于:packages/angular-query-experimental/src/mutation-options.ts:38

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

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

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

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

返回值

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

未作更改的原始选项对象。

参见

injectMutation 用于执行这些选项所描述的修改。

示例

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

angular-ts
1import { mutationOptions, injectMutationState } from '@tanstack/angular-query-experimental'2 3const createPostOptions = mutationOptions({4  mutationKey: ['posts', 'create'],5  mutationFn: createPost,6})7 8@Component({9  selector: 'saving-indicator',10  template: `11    @if (isCreatingPost()) {12      <span>Saving…</span>13    }14  `,15})16export class SavingIndicator {17  readonly #pendingCreates = injectMutationState(() => ({18    filters: { mutationKey: createPostOptions.mutationKey, status: 'pending' },19  }))20  readonly isCreatingPost = computed(() => this.#pendingCreates().length > 0)21}

调用签名

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

定义于:packages/angular-query-experimental/src/mutation-options.ts:94

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

类型参数

TData

TData = unknown

TError

TError = Error

TVariables

TVariables = void

TOnMutateResult

TOnMutateResult = unknown

参数

options

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

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

返回值

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

未作更改的原始选项对象。

备注

有关通过 injectMutationState 查找修改的示例,请参阅另一重载的示例。

参见

injectMutation 用于执行这些选项所描述的修改。

示例

在多个服务间共享选项,使 QueriesService 成为定义某项修改的唯一位置:

angular-ts
1import { mutationOptions, injectMutation } from '@tanstack/angular-query-experimental'2 3@Injectable({ providedIn: 'root' })4export class QueriesService {5  readonly #queryClient = inject(QueryClient)6 7  updatePost(id: number) {8    return mutationOptions({9      mutationFn: (post: Partial<Post>) => putPost(id, post),10      onSuccess: (newPost) => this.#queryClient.setQueryData(['posts', id], newPost),11    })12  }13}14 15@Component({16  selector: 'post',17  template: `<button (click)="save()">Save</button>`,18})19export class Post {20  readonly queries = inject(QueriesService)21  readonly id = signal(0)22  readonly updatePostMutation = injectMutation(() => this.queries.updatePost(this.id()))23 24  save() {25    this.updatePostMutation.mutate({ title: 'New Title' })26  }27}

参数

options

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

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

options 属性

基于 CreateMutationOptions 构建。详见上方类型定义中其具体变更内容。

返回值

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

未作更改的原始选项对象。

返回值属性

基于 CreateMutationOptions 构建。详见上方类型定义中其具体变更内容。

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

译自上游 59d11de