TGViewer
Frontend | Иван Усынин Frontend | Иван Усынин @usyninis_dev · 118 subscribers
Post #223 128
TanStack Query — польза инструмента на практике

Более 2 лет назад мы стартанули с нуля разработку нашего платформенного проекта, много времени уделив анализу и подбору подходящих и актуальных библиотек и инструментов.

Для взаимодействия с серверными данными был выбран TanStack Query (ранее известный как react-query). Вот несколько практических примеров в реальных задачах 👇

1️⃣ Гибкая система инвалидации кэша

Есть у нас UI который рисует граф (дерево) сущностей. При обновлении одной точки или связей надо перерисовать точку и дочерние ветки. При правильном указании queryKey и запуске в нужный момент invalidateQueries ваш UI автоматически перерисуется в нужных местах.

// получаем данные
useQuery({
queryKey: [‘schema’, itemKey]
})

// инвалидируем после обновления
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: [‘schema’, itemKey] });
},


💡 Еще лучше — когда ключи генерируются в одном месте (утилитой/фабрикой), чтобы со временем ключи не разъехались.

2️⃣ Не простой refetchInterval

refetchInterval может принимать функцию. Вот когда она может пригодиться: отображаем карточку сущности, которая имеет статусную модель. В определенном статусе надо совершать пуллинг (получать актуальный статус с сервера). Делаем это так:

useQuery({
queryFn: // получение данных
refetchInterval: (query) => {
if (query.state.data?.statusCode === STATUS_CODE.WAITING) {
return REFETCH_WAITING_INTERVAL;
}

return false;
},
})


Таким образом пуллинг будет выполняться только когда сущность в нужном вам статусе.

3️⃣ Всевозможные статусные состояния и refetch

useQuery и useMutation возвращает различные флаги: isLoading, isFetching, isError и т.д. Все это позволяет с точностью отображать загрузки/ошибки в нужном вам дизайне. В нашем случае таблица сперва загружается со скелетоном, а следующих апдейтах скелетон отображается только в строках таблицы. При ошибках загрузки остается только навешать refetch в нужную кнопку на UI.

👨‍💻 После реализации множества наших микрофронтов я бы сказал, что являюсь фанатом этой библиотеки :)

А ведь у TanStack есть еще router, store и прочие инструменты. А вы используете что-нибудь от TanStack?
  • 🔥 2
  • 👍 1
More from @usyninis_dev
  1. Sep 21, 2026cva: когда обычного сlsx уже мало Пока у кнопки два состояния — «обычная» и «выключенная»…
  2. Jul 25, 2026RBAC и permission-based проверки на frontend: как мы управляем доступом на проекте 🔐 В бо…
  3. Jul 17, 2026Remotion: make videos programmatically 📹 Remotion — это программный фреймворк, который по…
  4. Apr 12, 2026Выступил с лекцией в ITHub В минувшую субботу в колледже информационных и креативных техно…
  5. Mar 8, 2026Поздравляю прекрасных дам с 8 Марта! Пусть весна цветет не только на улице, но и в душе! Н…
  6. Mar 2, 2026React.lazy — еще один полезный сценарий 🚀 Одни из самых популярных кейсов использования R…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →