Allows to share and re-use mutation options in a type-safe way.
Example
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
The mutation options.
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(
options,
): WithRequired<
CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,
'mutationKey'
>
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(
options,
): WithRequired<
CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,
'mutationKey'
>
Defined in: mutation-options.ts:38
Allows to share and re-use mutation options in a type-safe way.
Example
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
• TData = unknown
• TError = Error
• TVariables = void
• TOnMutateResult = unknown
WithRequired<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The mutation options.
WithRequired<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
Mutation options.
Mutation options.
The mutation options.
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(
options,
): Omit<
CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,
'mutationKey'
>
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(
options,
): Omit<
CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>,
'mutationKey'
>
Defined in: mutation-options.ts:52
Allows to share and re-use mutation options in a type-safe way.
Example
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
export class QueriesService {
private http = inject(HttpClient)
updatePost(id: number) {
return mutationOptions({
mutationFn: (post: Post) => Promise.resolve(post),
mutationKey: ['updatePost', id],
onSuccess: (newPost) => {
// ^? newPost: Post
this.queryClient.setQueryData(['posts', id], newPost)
},
})
}
}
class ComponentOrService {
queries = inject(QueriesService)
id = signal(0)
mutation = injectMutation(() => this.queries.updatePost(this.id()))
save() {
this.mutation.mutate({ title: 'New Title' })
}
}
• TData = unknown
• TError = Error
• TVariables = void
• TOnMutateResult = unknown
Omit<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
The mutation options.
Omit<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
Mutation options.
Mutation options.
The mutation options.