Vue необязательный первый параметр маршрутизатора - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть список маршрутов, которые могут иметь необязательный первый параметр. Если параметр присутствует в URL, он изменит заголовок, который я использую в своих вызовах API. Все остальное остается прежним.

Вместо того, чтобы создавать два набора маршрутов, чтобы справиться с этим, есть ли способ, которым я могу перечислить первый параметр как необязательный и определить мои маршруты только один раз?

Для всех маршрутов, может быть :environment параметр, присутствующий во фронте:

/:environment/:event_identifier/register/pages/:page_uuid

или это может быть:

/:event_identifier/register/pages/:page_uuid

Все остальное останется прежним.

let routes = [{
   path: '/:event_identifier/register/pages/:page_uuid',
   name: 'ContentPage',
   component: ContentPage,
   meta: {
      requiresAuth: true,
   },
}, {
   path: '/:event_identifier/register/:pagenum',
   name: 'Register',
   component: Register,
   meta: {
      requiresAuth: true,
   },
}, {
   path: '/:event_identifier',
   name: 'Login',
   component: Login,
   children: [{
      path: '/:event_identifier/:registration_uuid/:pagenum',
      name: 'editRegistration',
      component: Login,
   }]
}]

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете объявить необязательный параметр следующим образом:

path: '/myroute/:param?'

? после :param делает его необязательным, поэтому он будет соответствовать http://domain/myroute без параметра или http://domain/myroute/25 с параметром.

Но я бы предложил сделать необязательные параметры last на каждом маршруте. В противном случае вы получите неясное поведение. Представьте, что у вас есть такой путь маршрута с дополнительным первым параметром.

path: '/myroute/:optional?/:notoptional'

Если вы посетите http://domain/myroute/25/100, 25 будет соответствовать :optional?

Но если вы посетите http://domain/myroute/25, 25 будет соответствовать :notoptional

...