Я создаю приложение 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-router использует path-to-regexp в качестве механизма согласования траектории, поэтому он поддерживает множество продвинутых шаблонов сопоставления, таких как дополнительные динамические сегменты, нулевые или более/одно или несколько требований и даже пользовательские шаблоны регулярных выражений.
Поэтому измените определение маршрута следующим образом:
{ path: 'poetry/:id(\\d+)', name: 'poetrycard', component: PoetryCard }
Reference- Усовершенствованные шаблоны соответствия
\\d+