Ashlis
@Ashlis

Как сформировать маршруты с асинхронными данными?

У меня есть файл router.js в нем я выставляю маршруты, допустим, Main и Category:
import Vue from 'vue'
import VueRouter from 'vue-router'
const routes = [
 {
    path: '/',
    name: 'Main',
    component: () => import('./views/Main.vue'),
  },
  {
    path: '/category',
    name: 'Category',
    component: () => import('./views/Category.vue'),
  }
]


Так же есть функция createRouter:
export function createRouter() {
  const router = new VueRouter({
    scrollBehavior() {
      return { x: 0, y: 0 }
    },
    mode: 'history',
    routes
  })
  router.beforeEach((to, from, next) => {
    document.title = to.meta.title
    next()
  })
  return router
}


Я хочу до экспорта функции createdRouter получить все категории таким методом:
store.dispatch('categories')
и для маршрута категорий в массиве routes определить path из их названий:
path: '/(cat1|cat2|cat3)/

Как это можно сделать?
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
Используйте динамический роутинг и обрабатывайте полученный идентификатор - https://router.vuejs.org/ru/guide/essentials/dynam...

const routes = [
 {
    path: '/',
    name: 'Main',
    component: () => import('./views/Main.vue'),
  },
  {
    path: '/category',
    name: 'Category',
    component: () => import('./views/Category.vue'),
  },
  {
    path: '/:category',
    // ...
  }
]


Соответственно, при получении запроса ищете в api наличие категории :category. Если такой нет, показывайте ошибку 404.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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