Задать вопрос
@nvdfxx
Senior Pomidor developer

Как сделать фильтрацию маршрутов vue?

В проекте пункты меню выводятся с помощью v-for="route in this.$router.options.routes". В vuex хранится роль юзера из firebase (null, user, admin). Нужно фильтровать массив роутов для вывода нужных пунктов меню с учетом роли юзера. Как это лучше реализовать? Желательно без хардкода отдельных массивов роутов под каждую роль.
  • Вопрос задан
  • 392 просмотра
Подписаться 3 Простой Комментировать
Помогут разобраться в теме Все курсы
  • HTML Academy
    Vue.js 3 — разработка клиентских приложений
    1 месяц
    Далее
  • Академия Эдюсон
    Frontend-разработчик + ИИ
    9 месяцев
    Далее
  • Stepik
    Frontend разработчик на HTML, CSS и JavaScript
    4 месяца
    Далее
Решения вопроса 1
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
Ну, это чисто для примера. В meta роута указываете роль (или роли), которым маршрут доступен.

<ul>
    <li v-for="route in routes"> ... </li>
  </ul>


// ...
export default {
  computed: {
    // ...
    userRole() {
      return this.$store.state.user.role;
    },
    routes() {
      return this.$router.options.routes.filter(({ meta }) => meta && meta.role === this.userRole);
    },
    // ...
  },
}
// ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы