Используйте регулярные выражения в путях Vue Router

1

Я создаю приложение VueJS, которое активно использует маршрутизатор vue.

Вот структура моих routes.js:

export const routes = [
    { path: '', component: Poetry, children: [
        { path: '', name: 'poetry', component: PoetryLanding },
        { path: 'poetry/:id', name: 'poetrycard', component: PoetryCard },
        { path: 'poetry/search', name: 'poetrysearch', component: PoetrySearch },
    ]},
]

Я хочу использовать регулярное выражение во втором дочернем компоненте, то есть в poetrycard, так что он принимает только params (:id), который является числом. Я делаю это, потому что poetrysearch получает влияние, поскольку /search рассматривается как :id !

Я старался:

{ path: 'poetry/:id/[0-9]/g', name: 'poetrycard', component: PoetryCard }

Но это не работает. Пожалуйста помоги.

Теги:
vue.js
vue-router

1 ответ

3
Лучший ответ

vue-router использует path-to-regexp в качестве механизма согласования траектории, поэтому он поддерживает множество продвинутых шаблонов сопоставления, таких как дополнительные динамические сегменты, нулевые или более/одно или несколько требований и даже пользовательские шаблоны регулярных выражений.

Поэтому измените определение маршрута следующим образом:

{ path: 'poetry/:id(\\d+)', name: 'poetrycard', component: PoetryCard }

Reference- Усовершенствованные шаблоны соответствия

  • 0
    Спасибо за ответ, но он не работает! Страница не загружается вообще.
  • 0
    @Sanjay, можешь попробовать заменить регулярное выражение на \\d+
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню