Проверяет понимание базовых параметров TanStack Query и роли ключа запроса в кэшировании и инвалидации данных.
TanStack Query (ранее React Query) управляет серверным состоянием в React-приложениях. Два ключевых параметра хука useQuery — это queryKey и queryFn. Они работают в паре: ключ определяет, где в кэше хранятся данные, а функция — как эти данные получить.
queryKey — это массив, который уникально идентифицирует запрос. Он используется как ключ в кэше, для дедупликации одновременных запросов, для инвалидации и для подписки на изменения. Ключ должен быть сериализуемым (строки, числа, объекты, массивы).
queryFn — это асинхронная функция, которая возвращает промис с данными. Она получает контекст с queryKey, что позволяет строить запрос на основе ключа.
Если параметр влияет на результат запроса, но не входит в ключ, TanStack Query будет считать, что данные те же самые, и вернёт устаревший кэш. Например, при смене userId без изменения ключа пользователь увидит данные предыдущего пользователя.
// Правильно: userId входит в queryKey
function useUser(userId) {
return useQuery({
queryKey: ['user', userId],
queryFn: () => fetch(`/api/users/${userId}`).then(r => r.json()),
});
}
// Неправильно: ключ не зависит от userId
function useUserBad(userId) {
return useQuery({
queryKey: ['user'],
queryFn: () => fetch(`/api/users/${userId}`).then(r => r.json()),
});
}
queryClient.invalidateQueries({ queryKey: ['user'] }) сбросит все запросы пользователей.Итог: включайте в queryKey все параметры, от которых зависит результат запроса — это гарантирует корректное кэширование, инвалидацию и отсутствие багов с устаревшими данными.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию