TanStack Router предоставляет мощный набор инструментов для отладки и анализа маршрутизации в приложениях на JavaScript и TypeScript. Эти инструменты упрощают понимание того, как маршруты обрабатываются, какие данные загружаются, а также позволяют отслеживать ошибки и состояние навигации в реальном времени.
TanStack Router Devtools — это отдельный пакет, который интегрируется с приложением и предоставляет визуальное представление всех маршрутов и состояний.
Основные возможности Devtools:
loader или action, а
также состояние асинхронных запросов.Установка и подключение:
npm install @tanstack/router-devtools
import { RouterDevtools } from '@tanstack/router-devtools'
import { RouterProvider } from '@tanstack/router'
import { router } from './router'
function App() {
return (
<RouterProvider router={router}>
<RouterDevtools initialIsOpen={false} />
</RouterProvider>
)
}
initialIsOpen определяет, будет ли панель Devtools
открыта по умолчанию. Панель может быть легко скрыта или раскрыта по
нажатию на иконку.
TanStack Router позволяет подключать пользовательские middleware для логирования, что помогает анализировать процесс маршрутизации без визуальных инструментов.
Пример логирования всех переходов:
import { router } from './router'
router.addListener('navigation', (event) => {
console.log('Переход:', event.to?.pathname)
console.log('Старый маршрут:', event.from?.pathname)
})
event.to и event.from содержат объекты
маршрутов, которые включают параметры, имя маршрута и загруженные
данные.
loader) и действий (action)TanStack Router позволяет асинхронно загружать данные для маршрутов
через loader и обрабатывать действия через
action. Devtools предоставляет возможность:
loader.Пример использования loader с логированием:
const userRoute = route({
path: '/user/:id',
loader: async ({ params }) => {
console.log('Загрузка данных для пользователя', params.id)
const response = await fetch(`/api/users/${params.id}`)
if (!response.ok) throw new Error('Ошибка загрузки')
return response.json()
},
})
Для приложений на React TanStack Router Devtools можно интегрировать с React DevTools, что позволяет:
useRouteLoaderData и useRouteContext.TanStack Router поддерживает глубокие вложенные маршруты и динамические сегменты URL. Devtools позволяет:
Пример структуры вложенных маршрутов:
/
├─ dashboard
│ ├─ overview
│ └─ stats
└─ user/:id
├─ profile
└─ settings
Devtools отображает это дерево, позволяя видеть активный путь и все промежуточные маршруты.
TanStack Router предоставляет встроенные инструменты для управления состоянием истории и состояния навигации:
initialIsOpen=false в
продакшн-приложении, чтобы Devtools не мешали
пользователям.TanStack Router Devtools превращают процесс разработки маршрутизации в наглядный и управляемый процесс, обеспечивая полный контроль над переходами, данными и состояниями. Это особенно важно для сложных SPA, где обычное логирование URL уже недостаточно.