javascript42
Главная
Все учебники
Блог
Учебник TanStack Query
Введение
Что такое TanStack Query
История развития библиотеки
Основные проблемы, которые решает TanStack Query
Сравнение с другими решениями для управления состоянием
Установка и настройка проекта
Требования к окружению
Основы работы с TanStack Query
Концепция серверного состояния
Архитектура библиотеки
QueryClient и его конфигурация
QueryClientProvider и контекст React
Базовый пример использования
Жизненный цикл запроса
useQuery
Синтаксис и параметры
Query keys и их структура
Query functions
Состояния запроса: loading, error, success
Автоматическое обновление данных
Опции staleTime и cacheTime
Параметры refetchInterval и refetchOnWindowFocus
Обработка ошибок
Retry логика
Enabled и условное выполнение запросов
Select и трансформация данных
PlaceholderData и initialData
useMutation
Назначение и отличия от useQuery
Синтаксис и базовое использование
Обработка успешных мутаций
Обработка ошибок в мутациях
Параметры onSuccess, onError, onSettled
Optimistic updates
Связь мутаций с обновлением кеша
Управление кешем
Структура кеша TanStack Query
QueryCache и MutationCache
Инвалидация запросов
Prefetching данных
Методы setQueryData и getQueryData
Удаление данных из кеша
Стратегии кеширования
Garbage collection
Продвинутые паттерны useQuery
Dependent queries
Параллельные запросы
Динамические query keys
Pagination
Infinite queries и useInfiniteQuery
Курсорная пагинация
Двунаправленная бесконечная загрузка
Query filters и pattern matching
Продвинутые паттерны useMutation
Последовательные мутации
Параллельные мутации
Отмена мутаций
Retry для мутаций
Персистентные мутации
Оптимизация производительности
Мемоизация query keys
Структурное разделение данных
Select для минимизации ререндеров
notifyOnChangeProps
Ленивые запросы
Дебаунсинг и троттлинг
Разделение кода и динамические импорты
Devtools
Установка и подключение
Интерфейс инструментов разработчика
Просмотр состояния запросов
Мониторинг кеша
Отладка и диагностика проблем
Инспекция мутаций
Интеграция с формами
Синхронизация форм с серверными данными
Валидация на основе серверных данных
Автосохранение
Оптимистичные обновления в формах
Обработка конфликтов
Работа с WebSocket и real-time обновлениями
Интеграция с WebSocket
Обновление кеша при получении событий
Query invalidation по событиям
Синхронизация данных в реальном времени
Серверный рендеринг
Гидратация и дегидратация
Prefetching на сервере
Настройка для Next.js
Streaming SSR
Обработка ошибок на сервере
Персистентность кеша
Восстановление состояния
Синхронизация между вкладками
Настройка сериализации
Управление версиями кеша
Глобальная конфигурация
Дефолтные опции запросов
Дефолтные опции мутаций
Кастомные query и mutation кеши
Глобальные обработчики ошибок
Логирование и мониторинг
Типизация с TypeScript
Типизация query keys
Типизация данных запросов
Дженерики в useQuery и useMutation
Типизация ошибок
Утилитарные типы библиотеки
Строгая типизация query functions
Тестирование
Настройка тестового окружения
Моки для QueryClient
Тестирование компонентов с useQuery
Тестирование мутаций
Тестирование с React Testing Library
Интеграционные тесты
Миграция и обновление
Миграция с версии 3 на версию 4
Миграция с версии 4 на версию 5
Breaking changes между версиями
Стратегии постепенной миграции
Работа с устаревшим API
Паттерны проектирования
Организация query keys
Структура query functions
Кастомные хуки
Абстракции над API
Обработка глобальных ошибок
Centralized API layer
Обработка ошибок
Границы ошибок с useQuery
Retry стратегии
Fallback UI
Глобальная обработка ошибок
Логирование ошибок
Типы ошибок и их обработка
Безопасность
Защита от CSRF
Обработка токенов аутентификации
Автоматическое обновление токенов
Безопасное хранение данных в кеше
Очистка чувствительных данных
Мониторинг и аналитика
Интеграция с системами мониторинга
Сбор метрик производительности
Отслеживание успешности запросов
Логирование кеша
Диагностика медленных запросов
Расширенная конфигурация
Кастомные QueryClient опции
Network mode и поведение офлайн
Настройка поведения фокуса окна
Управление реконнектом
Кастомизация логики повторов
Продвинутые техники
Suspense для данных
Concurrent rendering
Отмена запросов
Request deduplication
Batching запросов
Middleware и interceptors
Интеграция с экосистемой
Работа с Axios
Работа с Fetch API
Интеграция с GraphQL
Работа с tRPC
REST API best practices
Офлайн режим
Определение сетевого статуса
Стратегии работы офлайн
Синхронизация при восстановлении связи
Очереди мутаций
Конфликты данных
Практические рецепты
Поиск с автодополнением
Infinite scroll
Polling данных
Периодическое обновление
Загрузка файлов
Batch операции
Optimistic UI patterns
Undo/Redo функциональность
Оптимизация bundle size
Tree shaking
Минимизация зависимостей
Анализ размера бандла
Code splitting стратегии
Отладка и диагностика
Частые ошибки и их решения
Проблемы с кешированием
Memory leaks
Производительность запросов
Диагностика ререндеров
Лучшие практики
Организация кода
Naming conventions
Структура проекта
Code review чеклист
Производительность
Accessibility considerations