Query Docs
Guides & Concepts
- Important Defaults
- Queries
- Query Keys
- Query Functions
- Network Mode
- Parallel Queries
- Dependent Queries
- Background Fetching Indicators
- Window Focus Refetching
- Disabling/Pausing Queries
- Query Retries
- Paginated Queries
- Infinite Queries
- Initial Query Data
- Placeholder Query Data
- Prefetching
- Mutations
- Query Invalidation
- Invalidation from Mutations
- Updates from Mutation Responses
- Optimistic Updates
- Query Cancellation
- Scroll Restoration
- Filters
- SSR & Next.js
- Caching
- Default Query Fn
- Suspense
- Custom Logger
- Testing
- Does this replace [Redux, MobX, etc]?
- Migrating to React Query 3
- Migrating to React Query 4
ESLint
AI/LLM: This documentation page is available in plain markdown format at/query/v4/docs/eslint/exhaustive-deps.md
ESLint
Exhaustive dependencies for query keys
Query keys should be seen like a dependency array to your query function: Every variable that is used inside the queryFn should be added to the query key. This makes sure that queries are cached independently and that queries are refetched automatically when the variables changes.
Rule Details#
Examples of incorrect code for this rule:
tsx
/* eslint "@tanstack/query/exhaustive-deps": "error" */
useQuery({
queryKey: ["todo"],
queryFn: () => api.getTodo(todoId)
})
const todoQueries = {
detail: (id) => ({ queryKey: ["todo"], queryFn: () => api.getTodo(id) })
}Examples of correct code for this rule:
tsx
useQuery({
queryKey: ["todo", todoId],
queryFn: () => api.getTodo(todoId)
})
const todoQueries = {
detail: (id) => ({ queryKey: ["todo", id], queryFn: () => api.getTodo(id) })
}When Not To Use It#
If you don't care about the rules of the query keys, then you will not need this rule.
Attributes#
- ✅ Recommended
- 🔧 Fixable