TanStack Router предоставляет продвинутые возможности для управления навигацией в приложениях на JavaScript и TypeScript. Одним из ключевых аспектов является трейсинг маршрутов, который позволяет отслеживать переходы, отлаживать конфигурацию роутов и анализировать состояние навигации. Трейсинг особенно полезен при работе с вложенными маршрутами и динамическими параметрами.
В TanStack Router каждое событие маршрутизации генерирует детальную информацию о текущем состоянии роутера, что позволяет разработчику видеть:
Для включения трейсинга используется объект конфигурации роутера.
Основной параметр — useTracing, который подключает механизм
логирования и анализа навигации.
Пример конфигурации:
import { createRouter } from '@tanstack/router';
const router = createRouter({
routes: [
{
path: '/',
component: Home,
},
{
path: '/users/:userId',
component: UserProfile,
},
],
useTracing: true, // Включение трейсинга
});
При включенном трейсинге TanStack Router автоматически выводит в консоль информацию о каждом переходе, включая:
from — предыдущий маршрут;to — текущий маршрут;params — параметры маршрута;search — строку запроса;state — объект состояния, переданный при
навигации.Трейсинг позволяет видеть не только сам факт навигации, но и
детали динамических сегментов URL. Например, при
переходе на /users/42 трейсинг покажет:
{
"from": "/",
"to": "/users/42",
"params": { "userId": "42" },
"search": "",
"state": {}
}
Это особенно важно для отладки роутов с вложенными или динамическими сегментами, где ошибки часто связаны с некорректным сопоставлением параметров.
TanStack Router поддерживает асинхронные хуки загрузки
данных через loader и onLoad.
Трейсинг позволяет видеть последовательность вызовов этих хуков при
переходе между страницами.
Пример:
const router = createRouter({
routes: [
{
path: '/posts/:postId',
component: Post,
loader: async ({ params }) => {
const response = await fetch(`/api/posts/${params.postId}`);
return response.json();
},
onLoad: ({ data, params }) => {
console.log('Post loaded:', data, 'Params:', params);
},
},
],
useTracing: true,
});
При навигации к конкретному посту консоль отобразит
последовательность вызовов loader и onLoad с
указанием фактических параметров маршрута.
TanStack Router позволяет подключать собственные слушатели событий
через API router.subscribe. Это дает возможность
создавать пользовательские логики трейсинга, включая
интеграцию с системами аналитики и логирования.
Пример пользовательского трейсинга:
router.subscribe(({ from, to, params }) => {
console.log(`[TRACE] Navigation from ${from} to ${to} with params`, params);
});
Такой подход позволяет гибко реагировать на все изменения маршрута, в том числе для:
Для удобства отладки TanStack Router предлагает интеграцию с DevTools. При включенном трейсинге в браузере можно визуально отслеживать:
DevTools отображают дерево маршрутов, что упрощает понимание того, какой компонент рендерится в текущий момент и какие параметры ему передаются.
При работе с вложенными маршрутами трейсинг помогает понять, как срабатывают дочерние роуты. Для маршрута с глубокой вложенностью:
{
path: '/dashboard',
component: Dashboard,
children: [
{
path: 'analytics',
component: Analytics,
},
{
path: 'settings',
component: Settings,
},
],
}
При переходе на /dashboard/analytics трейсинг
покажет:
dashboard;analytics;Трейсинг в TanStack Router является мощным инструментом для отладки навигации, анализа параметров и контроля загрузки данных. Он позволяет визуализировать весь путь пользователя через приложение, фиксировать параметры маршрутов и интегрировать пользовательские системы логирования. Это делает TanStack Router особенно удобным для сложных приложений с множеством вложенных и динамических маршрутов.