Use object rest destructuring on query results automatically subscribes to every field of the query result, which may cause unnecessary re-renders. This makes sure that you only subscribe to the fields that you actually need.
Examples of incorrect code for this rule:
/* eslint "@tanstack/query/no-rest-destructuring": "warn" */
const useTodos = () => { const { data: todos, ...rest } = useQuery({ queryKey: ['todos'], queryFn: () => api.getTodos(), }) return { todos, ...rest }}
Examples of correct code for this rule:
const todosQuery = useQuery({ queryKey: ['todos'], queryFn: () => api.getTodos(),})
// normal object destructuring is fineconst { data: todos } = todosQuery
If you set the notifyOnChangeProps
options manually, you can disable this rule.
Since you are not using tracked queries, you are responsible for specifying which props should trigger a re-render.
“This course is the best way to learn how to use React Query in real-world applications.”—Tanner LinsleyCheck it out