В Universal Router именованные параметры позволяют
создавать гибкие маршруты с динамическими сегментами пути, которые затем
могут использоваться в обработчиках маршрутов. Именованные параметры
обозначаются с помощью двоеточия : перед именем
параметра.
const routes = [
{
path: '/user/:id',
action: ({ params }) => `Пользователь с ID: ${params.id}`
}
];
В данном примере сегмент :id является именованным
параметром. Когда роутер сопоставляет URL /user/42, объект
params будет содержать:
{ id: '42' }
Можно использовать несколько именованных параметров в маршруте, разделяя их слэшами:
{
path: '/product/:category/:id',
action: ({ params }) => `Категория: ${params.category}, ID продукта: ${params.id}`
}
Для URL /product/electronics/123 результатом будет:
{ category: 'electronics', id: '123' }
Важно: Имена параметров должны быть уникальными в пределах одного маршрута. Повторение имен приведёт к непредсказуемому поведению.
Universal Router поддерживает ограничение значений параметров с помощью регулярных выражений. Это полезно, когда необходимо разрешить только определённый формат данных.
{
path: '/order/:orderId(\\d+)',
action: ({ params }) => `Заказ №${params.orderId}`
}
Маршрут сработает только для числовых orderId. URL
/order/123 будет корректен, а /order/abc —
нет.
Именованные параметры могут быть опциональными, если добавить знак
вопроса ? после имени параметра:
{
path: '/archive/:year/:month?',
action: ({ params }) => `Архив за ${params.year}${params.month ? '-' + params.month : ''}`
}
/archive/2026/03 →
{ year: '2026', month: '03' }/archive/2026 →
{ year: '2026', month: undefined }Опциональные параметры позволяют создавать маршруты с гибкой глубиной пути, сохраняя читаемость.
Universal Router не поддерживает встроенные дефолтные значения
напрямую, но их легко реализовать внутри action:
{
path: '/blog/:page?',
action: ({ params }) => {
const page = params.page || '1';
return `Страница блога: ${page}`;
}
}
Здесь, если параметр page отсутствует, используется
значение '1'.
При динамическом создании ссылок параметры удобно подставлять с помощью шаблонных строк:
function generateUserLink(userId) {
return `/user/${userId}`;
}
generateUserLink(42); // "/user/42"
В комбинации с роутером это обеспечивает строгую согласованность между URL и обработчиками.
paramsОбъект params содержит все именованные параметры
текущего маршрута. Его можно использовать для:
{
path: '/profile/:username',
action: ({ params }) => fetch(`/api/users/${params.username}`)
}
/User/:id и
/user/:id — разные маршруты.Именованные параметры хорошо работают во вложенных маршрутах. Например:
const routes = [
{
path: '/dashboard',
children: [
{ path: 'user/:id', action: ({ params }) => `Дашборд пользователя ${params.id}` },
{ path: 'settings', action: () => 'Настройки' }
]
}
];
Для URL /dashboard/user/7 объект params
будет:
{ id: '7' }
Это делает роутер удобным для SPA, где маршруты часто строятся с вложенной структурой.
Именованные параметры в Universal Router — это мощный инструмент, который позволяет создавать гибкие, динамические и структурированные маршруты. Правильное использование параметров с регулярными ограничениями, опциональными сегментами и вложенными маршрутами обеспечивает читаемость и предсказуемость приложения.