Query Keys and Caching
React Query uses query keys as unique identifiers to manage and cache your data. When you call the useQuery hook, you provide a query keyβeither a string like 'users' or an array such as ['user', userId]. The key must be unique to the specific data you want to fetch; otherwise, React Query will treat different requests as the same and share cached results.
If you change the query key, React Query sees it as a new request. It checks the cache for the new key and fetches fresh data if needed, then caches it under that key. This ensures you always get the correct data and helps avoid unnecessary network requests.
Here is a practical example that shows how query keys affect caching and fetching. Suppose you have a component that displays user details:
useQuery({
queryKey: ['user', userId],
queryFn: () => fetchUser(userId),
});
If userId is 1, the query key is ['user', 1]. React Query fetches and caches the data under this key. If userId changes to 2, the query key becomes ['user', 2]. React Query does not find this key in the cache, so it triggers a new fetch and stores the result under the new key.
If you later navigate back to userId = 1, React Query uses the cached data for ['user', 1] and avoids a new network request unless the data is stale or has been invalidated.
Thanks for your feedback!
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat
Can you explain more about how query key arrays work in React Query?
What happens if I use the same query key for different data?
How can I manually invalidate or refetch data in React Query?
Awesome!
Completion rate improved to 7.14
Query Keys and Caching
Swipe to show menu
React Query uses query keys as unique identifiers to manage and cache your data. When you call the useQuery hook, you provide a query keyβeither a string like 'users' or an array such as ['user', userId]. The key must be unique to the specific data you want to fetch; otherwise, React Query will treat different requests as the same and share cached results.
If you change the query key, React Query sees it as a new request. It checks the cache for the new key and fetches fresh data if needed, then caches it under that key. This ensures you always get the correct data and helps avoid unnecessary network requests.
Here is a practical example that shows how query keys affect caching and fetching. Suppose you have a component that displays user details:
useQuery({
queryKey: ['user', userId],
queryFn: () => fetchUser(userId),
});
If userId is 1, the query key is ['user', 1]. React Query fetches and caches the data under this key. If userId changes to 2, the query key becomes ['user', 2]. React Query does not find this key in the cache, so it triggers a new fetch and stores the result under the new key.
If you later navigate back to userId = 1, React Query uses the cached data for ['user', 1] and avoids a new network request unless the data is stale or has been invalidated.
Thanks for your feedback!