Allows to share and re-use mutation options in a type-safe way.
Example
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' })
  }
}
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' })
  }
}
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:39
Allows to share and re-use mutation options in a type-safe way.
Example
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' })
  }
}
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' })
  }
}
• 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:53
Allows to share and re-use mutation options in a type-safe way.
Example
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' })
  }
}
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' })
  }
}
• 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.
