Большинство моих маршрутов защищены и требуют разрешения для доступа к ним. Когда пользователь успешно вошел в систему, мой Navbar
компонент выполняет вызов API и получает набор маршрутов, к которым пользователь имеет доступ.
После этого я добавляю все файлы вида, соответствующие маршрутам, на панель навигации.
Это пример кода, показывающего процесс
<template>
<div>
<router-link
v-for="navItem in navItems"
:key="navItem.title"
:to="navItem.url"
>{{ navItem.title }}</router-link>
</div>
</template>
<script>
export default {
data: function() {
return {
navItems: []
};
},
created: async function() { // Setup the router here
this.navItems = [
// !!! API CALL !!!
{
title: "Dashboard",
url: "/Dashboard"
},
{
title: "Users",
url: "/users/Users"
},
{
title: "Groups",
url: "/groups/Groups"
}
];
const routes = await this.navItems.map(async navItem => {
const { url } = navItem;
return {
path: url,
component: await import(`../views${url}.vue`)
};
});
this.$router.addRoutes(routes);
}
};
</script>
К сожалению, я получаю эту ошибку
Uncaught (в обещании) Ошибка: [vue-router] "путь" требуется в
конфигурация маршрута.
но, как видно из примера кода, этот атрибут установлен. Я создал образец проекта здесь
https://codesandbox.io/s/vue-routing-example-i2znt
Если вы позвоните по этому маршруту
https://i2znt.codesandbox.io/#/Dashboard
Я ожидаю, что маршрутизатор отобразит файл Dashboard.vue
.