Я хочу достичь n уровней динамических вложенных маршрутов в Vue.js, где n мне неизвестно. для например -
abc.com/ctx-path/component/1/2/...../n
где 1,2, ... n - уровни
Как я могу добиться этого с помощью Vue-router?
Я хочу достичь n уровней динамических вложенных маршрутов в Vue.js, где n мне неизвестно. для например -
abc.com/ctx-path/component/1/2/...../n
где 1,2, ... n - уровни
Как я могу добиться этого с помощью Vue-router?
За кулисами сопоставления путей vue-router используется путь к регулярному выражению. Итак, должно быть возможно написать что-то вроде этого
{ path: '/ctx-path/component/:id+', component: Component }
or
{ path: '/ctx-path/component/:id*', component: Component }
Вы также можете добавить путь динамически во время времени выполнения, но вам понадобится триггер, чтобы добавить его.
Последний вариант - иметь поймать весь маршрут и добавить свою логику.
Это из документов:
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User,
children: [
{
// UserProfile will be rendered inside User's <router-view>
// when /user/:id/profile is matched
path: 'profile',
component: UserProfile
},
{
// UserPosts will be rendered inside User's <router-view>
// when /user/:id/posts is matched
path: 'posts',
component: UserPosts
}
]
}
]
})
см. ссылку https://router.vuejs.org/guide/essentials/nested-routes.html
Двойные динамические вложенные маршруты для фильтрации одного представления по параметрам вложенного URL
const routes = [
{
path: '/category/:categoryId',
name: 'category',
component: () =>
import(/* webpackChunkName: "product" */ '../views/Categories.vue'),
props: (route: Route) => ({
categoryId: route.params.categoryId,
}),
},
{
path: '/category/:categoryId/:attributeIdsJsonString',
name: 'attributeFilter',
component: () =>
import(/* webpackChunkName: "product" */ '../views/Categories.vue'),
props: (route: Route) => ({
categoryId: route.params.categoryId,
attributeIdsJsonString: route.params.attributeIdsJsonString,
}),
},
];
const router = new VueRouter({
routes,
});
Использование других имен маршрутов, подобных этому, будет означать, что beforeRouteUpdate
в некоторых случаях не сработает, поэтому используйте также beforeRouteEnter