@tanstack/angular-query-experimental
Version:
Signals for managing, caching and syncing asynchronous and remote data in Angular
40 lines (39 loc) • 1.65 kB
TypeScript
import { DefaultError, WithRequired } from '@tanstack/query-core';
import { CreateMutationOptions } from './types.js';
/**
* Allows to share and re-use mutation options in a type-safe way.
*
* **Example**
*
* ```ts
* export class QueriesService {
* private http = inject(HttpClient)
* private queryClient = inject(QueryClient)
*
* 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' })
* }
* }
* ```
* @param options - The mutation options.
* @returns Mutation options.
*/
export declare function mutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown>(options: WithRequired<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, 'mutationKey'>): WithRequired<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, 'mutationKey'>;
export declare function mutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown>(options: Omit<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, 'mutationKey'>): Omit<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>, 'mutationKey'>;