PassFront
  1. PassFront
  2. База знаний
  3. API и асинхронность

Какие плюсы и минусы React Query?

API и асинхронность

TanStack (React) Query — библиотека управления серверным состоянием: кеш запросов, синхронизация, мутации.

Плюсы

  • Убирает бойлерплейт: вместо useEffect + isLoading + error + отмена — один useQuery со статусами.
  • Кеш и дедупликация: компоненты с одинаковым queryKey делят один запрос и данные; никакого prop drilling и «данных в Redux».
  • Свежесть из коробки: stale-while-revalidate (мгновенный показ кеша + фоновая перезагрузка), refetch при фокусе/реконнекте, интервалы.
  • Надёжность: ретраи с backoff, отмена, защита от гонок.
  • Мутации: инвалидация кеша, оптимистичные обновления с откатом.
  • Пагинация и бесконечные списки, префетч, Suspense-режим, отличные девтулзы.
  • Как следствие — глобальный стор часто становится не нужен.

Минусы

  • Ещё одна абстракция: свой словарь (queryKey, staleTime, gcTime, invalidate) и порог входа; неверные ключи → «данные не обновились».
  • Не нормализованный кеш: одна сущность может лежать в нескольких запросах; при сложных связях нужна ручная инвалидация (в отличие от Apollo/RTK Query с тегами/нормализацией).
  • Не для клиентского состояния: UI-флаги, корзина, формы — не её задача.
  • Размер бандла и лишний слой для приложения с двумя запросами.
  • Realtime (WebSocket) требует ручной синхронизации кеша.

Когда выбирать

Практически всегда, когда приложение живёт на серверных данных со списками, деталями и CRUD. Не выбирать: пара статических запросов; GraphQL со сложной нормализацией (Apollo/urql); стек уже на Redux — тогда RTK Query.

Коротко для собеседования

Плюсы: кеш с дедупликацией и фоновым обновлением, статусы и ретраи без бойлерплейта, мутации с инвалидацией и оптимистичными апдейтами, девтулзы; серверные данные уходят из стора. Минусы: порог входа и дисциплина ключей, кеш не нормализован (ручная инвалидация связей), не для клиентского состояния, оверхед на простых приложениях.

Другие вопросы раздела