mutationOptions
概述
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">;WithRequired<CreateMutationOptions>→WithRequired<CreateMutationOptions>:你通常可以向mutationOptions传入所有能传给injectMutation的参数。此重载要求提供一个mutationKey,以便后续查找该修改(例如通过injectMutationState)。Omit<CreateMutationOptions>→Omit<CreateMutationOptions>:你通常可以向mutationOptions传入所有能传给injectMutation的参数。此重载无需提供mutationKey—— 当你后续不需要通过mutationKey过滤器定位该修改时(例如通过injectMutationState),请使用此重载;它仍可通过其他过滤器(如status)被观察到。
调用签名
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 查找该修改,例如实现全局“正在保存…”指示器:
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}调用签名
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 成为定义某项修改的唯一位置:
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 构建。详见上方类型定义中其具体变更内容。