TanStack Router предоставляет декларативный подход к организации
маршрутов в приложениях на JavaScript. Основная идея заключается в
построении иерархии маршрутов с помощью объектов Route и
использовании провайдера RouterProvider для интеграции
маршрутов с React-компонентами. Каждый маршрут описывает путь, компонент
и опциональные функции загрузки данных, редиректы и обработки
ошибок.
Ключевые элементы:
Постепенная миграция позволяет внедрять TanStack Router в существующее приложение без полной переработки маршрутизации. Основная стратегия — интеграция нового роутера рядом с текущим и постепенная замена отдельных маршрутов.
Этапы миграции:
Создание отдельного TanStack Router Для начала нужно инициализировать новый роутер с базовым маршрутом:
import { createRouter, Route, RouterProvider } from '@tanstack/router';
const rootRoute = new Route({
path: '/',
component: HomePage,
});
const router = createRouter({
routeTree: rootRoute,
});
<RouterProvider router={router} />;
Этот роутер может существовать параллельно с текущей системой навигации.
Изоляция маршрутов для новых страниц Новые страницы и функционал подключаются через TanStack Router, в то время как старые маршруты остаются на текущей реализации. Это минимизирует риск поломки существующего приложения.
Интеграция с существующими компонентами Для постепенного перехода старые компоненты можно оборачивать в маршруты TanStack Router, не меняя внутреннюю логику:
const oldPageRoute = new Route({
path: '/old-page',
component: OldPageWrapper,
});
const router = createRouter({
routeTree: rootRoute.addChildren([oldPageRoute]),
});Постепенный перенос функциональности
loader
вместо прямых вызовов API внутри компонента.ErrorBoundary на уровне
отдельных маршрутов, чтобы локализовать сбои.Подмена навигации Старые ссылки и переходы
постепенно заменяются на <Link> и
router.navigate() от TanStack Router:
import { Link } from '@tanstack/router';
<Link to="/new-page">Перейти на новую страницу</Link>Обновление глобального состояния маршрутизации
TanStack Router поддерживает реактивные подписки на текущий маршрут.
Постепенно можно заменить существующие состояния навигации на реактивные
селекторы router.state.currentRoute.
react-router или next/router, и
TanStack Router, пока весь код не будет переведен.loader позволяют отделить получение данных от компонента,
что облегчает тестирование и поддержку.Постепенная миграция на TanStack Router обеспечивает безопасное, управляемое внедрение современной маршрутизации в существующие приложения JavaScript без сбоев и резких изменений.