Статические маршруты в TanStack Router представляют собой маршруты с
фиксированным путем, который не изменяется в зависимости от параметров
или состояния приложения. Они идеально подходят для страниц, которые
всегда имеют одинаковый URL, например, /about,
/contact или /dashboard.
Определение статического маршрута выполняется через объект маршрута:
import { createRouter, createRouteConfig } from '@tanstack/router';
const routeConfig = createRouteConfig()
.createRoute({
path: '/about',
component: AboutPage,
});
const router = createRouter({ routeConfig });
В этом примере AboutPage будет отображаться каждый раз,
когда URL точно соответствует /about.
Преимущества статических маршрутов:
Ограничения статических маршрутов:
Динамические маршруты позволяют использовать параметры в URL, которые
могут меняться в зависимости от контекста. Параметры обозначаются через
двоеточие : перед именем переменной в пути. Например,
маршрут /users/:userId может отображать разные страницы
профиля в зависимости от userId.
Пример определения динамического маршрута:
const routeConfig = createRouteConfig()
.createRoute({
path: '/users/:userId',
component: UserProfilePage,
});
const router = createRouter({ routeConfig });
В этом случае UserProfilePage получает доступ к
параметру userId через объект useParams:
import { useParams } from '@tanstack/router';
function UserProfilePage() {
const { userId } = useParams();
return Профиль пользователя: {userId};
}
Ключевые особенности динамических маршрутов:
/users/:userId/posts/:postId.router.navigate.Пример навигации с параметрами:
router.navigate({ to: '/users/:userId', params: { userId: 42 } });
TanStack Router позволяет комбинировать статические и динамические
маршруты в иерархии. Вложенные маршруты определяются с помощью свойства
children:
const routeConfig = createRouteConfig()
.createRoute({
path: '/users',
component: UsersPage,
children: [
{
path: ':userId',
component: UserProfilePage,
children: [
{ path: 'posts', component: UserPostsPage }
],
},
],
});
В этом примере /users — статический маршрут,
/users/:userId — динамический, а
/users/:userId/posts — вложенный маршрут динамического
типа.
Особенности вложенных маршрутов:
Для динамических маршрутов важно корректно работать с параметрами. TanStack Router поддерживает строгую типизацию:
import { createRouter, Route } from '@tanstack/router';
type Params = { userId: string };
const userRoute: Route = routeConfig.createRoute({
path: '/users/:userId',
component: UserProfilePage,
});
Типизация параметров обеспечивает:
router.navigate.Статические маршруты стоит использовать для:
Динамические маршруты актуальны для:
Смешанные сценарии позволяют строить гибкую архитектуру: статические маршруты обеспечивают базовую навигацию, а динамические маршруты расширяют возможности приложения без дублирования кода.