У меня есть vue -маршрутизатор, который выглядит следующим образом:
const router = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
children: [
{
{
path: 'main',
name: 'main',
component: () => import(/* webpackChunkName: "main" */ './views/main/Main.vue'),
children: [
{
path: 'dashboard',
name: 'main-dashboard',
component: () => import(/* webpackChunkName: "main-dashboard" */ './views/main/Dashboard.vue'),
},
...
Имеются средства защиты маршрута, так что после входа пользователя в систему они направляются на /BASE_URL/main/dashboard
.
public beforeRouteEnter(to, from, next) {
routeGuardMain(to, from, next);
}
public beforeRouteUpdate(to, from, next) {
routeGuardMain(to, from, next);
}
const routeGuardMain = async (to, from, next) => {
if (to.name === 'main') {
next({ name: 'main-dashboard'});
} else {
next();
}
};
Я храню user_id
и account_id
в состоянии Vuex, и я хотел бы иметь возможность создать такую структуру URL-адресов, как:
BASE_URL/<account_id>/dashboard
Но у меня проблемы с доступом к account_id
из магазина (у меня есть настройки геттеров для получения соответствующих параметров) и передача его в качестве параметра во время перенаправления в охраннике маршрута (его значение null / undefined, поэтому я думаю, что мне нужно ждать где-нибудь ??).
Я могу настроить динамические c URL-адреса для путей, которые не имеют защиты маршрута, но не знаю, как это сделать с ними на месте.
Я прочитал документацию vue -router, но не могу с этим справиться.
Пожалуйста, кто-нибудь может подсказать, как я могу достичь структуры целевого URL? Приносим извинения, мне не хватает навыков работы с интерфейсом, и я новичок в Vue. js
Спасибо!