Этап 5 из 12 · ≈ 6 ч

Серверное состояние — TanStack Query

Основа с Middle

Загрузка, кэширование и обновление данных с сервера без самописных эффектов.

const { data, isPending, error } = useQuery({
  queryKey: ["orders", page],
  queryFn: () => api.orders(page),
});

const mutation = useMutation({
  mutationFn: api.cancelOrder,
  onSuccess: () => queryClient.invalidateQueries({ queryKey: ["orders"] }),
});

Что важно знать

  • Данные с сервера — это кэш, а не состояние приложения: у него есть свежесть, повторы, обновление в фоне, инвалидация.
  • Запрос в useEffect с ручными флагами загрузки — источник гонок, дублирования и утечек; библиотека решает это из коробки.
  • Ключ запроса включает все параметры — смена страницы или фильтра автоматически загружает нужные данные.
  • Оптимистичные обновления: показать результат сразу, откатить при ошибке.
  • Альтернативы: RTK Query (в составе Redux Toolkit), SWR, загрузчики маршрутизатора.

Критерии освоения

Middle ≈ 6 ч

  • Загружает и изменяет данные через useQuery и useMutation с инвалидацией
  • Делает оптимистичные обновления с откатом при ошибке

Практика. Перевести список заказов на TanStack Query с пагинацией, отменой заказа и оптимистичным обновлением.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Как работать с серверными данными через TanStack Query?Middle

Серверное состояние — копия данных сервера: его нужно кэшировать, обновлять, дедуплицировать. useQuery({ queryKey, queryFn }) даёт data, isPending, error, кэш по ключу, повторы при ошибках, фоновое обновление при возврате на вкладку, отмену устаревших…

Полный разбор
Как сделать оптимистичное обновление интерфейса с откатом при ошибке?Middle

Оптимистичное обновление показывает результат действия сразу, не дожидаясь сервера (лайк, отметка задачи), — интерфейс кажется мгновенным. В TanStack Query: в onMutate отменить текущие запросы этого ключа, сохранить прежние данные, записать новые через…

Полный разбор
Как тестировать компоненты, которые ходят в сеть и используют провайдеры?Middle

MSW (Mock Service Worker) перехватывает запросы на уровне сети и отвечает заданными данными: компонент работает с настоящим fetch и клиентом, а тест управляет ответами — успех, ошибка 500, задержка. Обработчики общие для тестов, Storybook и локальной…

Полный разбор
Как сделать HTTP-запрос через fetch и правильно обработать ошибки?Junior

fetch(url, options) возвращает Promise ответа. Важно: промис отклоняется только при сетевой ошибке — на 404 и 500 он выполняется успешно, поэтому надо проверять response.ok или status. Тело читают await res.json() (тоже промис). Для POST — method, headers…

Полный разбор

Документация

← Вся карта «React»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования