Skip to content

Latest commit

 

History

History
27 lines (24 loc) · 847 Bytes

mutation-options.md

File metadata and controls

27 lines (24 loc) · 847 Bytes
id title
query-options
Mutation Options

One of the best ways to share mutation options between multiple places, is to use the mutationOptions helper. At runtime, this helper just returns whatever you pass into it, but it has a lot of advantages when using it with TypeScript. You can define all possible options for a mutation in one place, and you'll also get type inference and type safety for all of them.

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)
      },
    })
  }
}