Вопрос проверяет понимание механизмов кэширования данных в React Query, что важно для оптимизации производительности и управления состоянием серверных данных в React-приложениях.
React Query (TanStack Query) предоставляет мощный механизм кэширования данных, получаемых с сервера. Каждый запрос идентифицируется уникальным ключом (query key), который используется для хранения и извлечения данных из кэша. Кэш хранится в памяти приложения и управляется автоматически.
import { useQuery } from '@tanstack/react-query';
function useTodos() {
return useQuery({
queryKey: ['todos'],
queryFn: fetchTodos,
staleTime: 5 * 60 * 1000, // 5 минут данные считаются свежими
gcTime: 10 * 60 * 1000, // 10 минут данные хранятся в кэше после удаления компонента
});
}Для обновления данных после мутации используется инвалидация кэша с помощью queryClient.invalidateQueries. Это помечает данные как устаревшие и инициирует повторный запрос.
import { useMutation, useQueryClient } from '@tanstack/react-query';
function useAddTodo() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: addTodo,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['todos'] });
},
});
}Кэширование в React Query позволяет значительно сократить количество запросов к серверу, улучшить производительность и обеспечить актуальность данных. Рекомендуется использовать staleTime для данных, которые редко меняются, и gcTime для управления памятью.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию