Ensure correct order of inference-sensitive properties in useMutation()
Source URL: https://tanstack.com/query/latest/docs/eslint/mutation-property-order
Ensure correct order of inference-sensitive properties in useMutation()
Section titled “Ensure correct order of inference-sensitive properties in useMutation()”For the following functions, the property order of the passed in object matters due to type inference:
useMutation()
The correct property order is as follows:
onMutateonErroronSettled
All other properties are insensitive to the order as they do not depend on type inference.
Rule Details
Section titled “Rule Details”Examples of incorrect code for this rule:
/* eslint "@tanstack/query/mutation-property-order": "warn" */import { useMutation } from '@tanstack/react-query'
const mutation = useMutation({ mutationFn: () => Promise.resolve('success'), onSettled: () => { results.push('onSettled-promise') return Promise.resolve('also-ignored') // Promise<string> (should be ignored) }, onMutate: async () => { results.push('onMutate-async') await sleep(1) return { backup: 'async-data' } }, onError: async () => { results.push('onError-async-start') await sleep(1) results.push('onError-async-end') },})Examples of correct code for this rule:
/* eslint "@tanstack/query/mutation-property-order": "warn" */import { useMutation } from '@tanstack/react-query'
const mutation = useMutation({ mutationFn: () => Promise.resolve('success'), onMutate: async () => { results.push('onMutate-async') await sleep(1) return { backup: 'async-data' } }, onError: async () => { results.push('onError-async-start') await sleep(1) results.push('onError-async-end') }, onSettled: () => { results.push('onSettled-promise') return Promise.resolve('also-ignored') // Promise<string> (should be ignored) },})Attributes
Section titled “Attributes”- ✅ Recommended
- 🔧 Fixable