Redux DevTools интегрируется с RTK Query через стандартный Redux Toolkit store, поскольку RTK Query полностью основан на Redux-слайсах и middleware. Вся работа DevTools строится вокруг отслеживания экшенов, состояния кэша и побочных эффектов, которые генерируются API-слайсом. Это позволяет анализировать сетевые запросы, жизненный цикл кэшированных данных и внутренние состояния запросов без дополнительных инструментов.
RTK Query не является отдельной системой хранения данных — он работает поверх Redux store. Каждый API-слайс создаёт:
Redux DevTools фиксирует именно эти экшены, благодаря чему становится видимым полный цикл работы RTK Query.
Основные категории действий, которые отображаются в DevTools:
query initiated)fulfilled)rejected)Каждое действие сериализуется как обычный Redux action, что делает RTK Query полностью прозрачным для DevTools.
RTK Query не требует специальных настроек для DevTools. Поддержка
включается через стандартную конфигурацию
configureStore.
import { configureStore } from '@reduxjs/toolkit'
import { api } from './services/api'
export const store = configureStore({
reducer: {
[api.reducerPath]: api.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(api.middleware),
devTools: true
})
Флаг devTools: true активирует интеграцию с Redux
DevTools Extension.
Если используется production-сборка, обычно включение DevTools ограничивают:
devTools: process.env.NODE_ENV !== 'production'
RTK Query генерирует специфические action-типы, которые можно отслеживать в DevTools как обычные Redux события.
Каждый запрос начинается с экшена:
api/executeQuery/pendingОн содержит:
При успешном ответе:
api/executeQuery/fulfilledСодержит:
При сбое:
api/executeQuery/rejectedСодержит:
Одной из ключевых особенностей RTK Query является автоматическое кэширование данных. Redux DevTools позволяет наблюдать изменения в state API-слайса.
Структура состояния обычно выглядит так:
state.api = {
queries: {},
mutations: {},
provided: {},
subscriptions: {},
config: {}
}
Хранит результаты GET-запросов:
Хранит состояние POST/PUT/DELETE операций:
RTK Query использует систему тегов для автоматического обновления данных. DevTools отображает связанные экшены:
api/invalidateTagsapi/executeQuery/pending (повторный запуск после
инвалидации)Теги позволяют отслеживать цепочку обновления данных между различными endpoint’ами.
Пример поведения:
invalidateTagsDevTools предоставляет линейную историю экшенов, что позволяет разбирать поведение RTK Query по шагам:
Типичная цепочка:
query initiatedcache lookupfetch startedfulfilledcache updatedsubscription notifiedКаждый шаг фиксируется как отдельное Redux-событие.
RTK Query оптимизирует повторные запросы через кеш. DevTools помогает увидеть:
При повторном вызове query возможны разные сценарии:
RTK Query поддерживает подписочную модель. DevTools показывает экшены:
Это важно для понимания жизненного цикла данных:
DevTools позволяет анализировать временные характеристики:
Каждый action содержит timestamp, что делает возможным анализ производительности без дополнительных инструментов.
Типовые ситуации, которые можно выявить через DevTools:
Причины:
В DevTools видно повторяющиеся pending →
fulfilled.
Причины:
DevTools показывает, какой экшен инициировал обновление.
Причины:
В DevTools фиксируется api/resetApiState.
DevTools позволяет исследовать внутреннюю структуру:
Каждый ключ соответствует аргументу запроса, включая сериализованные параметры.
Содержит mapping тегов на конкретные query keys.
Позволяет отслеживать активные мутации и их статус.
Без DevTools RTK Query остаётся «чёрным ящиком» сетевых запросов. С DevTools:
В сложных системах DevTools может содержать большое количество RTK Query actions. Для анализа применяются:
api/При этом структура Redux state остаётся предсказуемой, что упрощает навигацию даже при большом количестве запросов.
Middleware является центральной частью RTK Query. Именно он:
DevTools фиксирует каждый этап как отдельный action, хотя внутри middleware происходит более сложная логика.
При серверном рендеринге:
hydrateЭто позволяет анализировать различия между server state и client state.
Несмотря на высокую информативность:
Однако поведение системы остаётся полностью реконструируемым по экшенам и state.