【问题标题】:Vue.js: addRoutes method with array from API callVue.js:带有来自 API 调用的数组的 addRoutes 方法
【发布时间】:2018-11-06 10:31:15
【问题描述】:

我将第一次使用 addRoutes 方法。我没有找到任何关于开发人员如何使用这种方法的完整教程,所以我决定在这里尝试询问。

在我的应用中,我有某种 CMS,因此用户可以使用自定义路径创建新页面。在我导入组件并声明其路由的 router/index.js 文件中,我需要添加这些自定义路由。

我有一个 API 端点,它可以给我一个带有这些路由数组的 JSON。如何在我的 router/index.js 文件中调用此端点并将这些新路由添加到我的路由器?

这是我的 router.index.js 文件中的内容(我添加了它的结构而不是代码本身):

import Vue from 'vue';
import VueRouter from 'vue-router';
import http from '../http';
import config from '../config';
import Home from '../components/pages/Home';

Vue.use(VueRouter);

const router = new VueRouter({
 mode: 'history',
 routes: [
  {
   path: '/home',
   name: 'home',
   component: Home,
  },
  ...
  ],
});

router.addRoutes([]);

export default router;

【问题讨论】:

  • 我不建议你像这样在主文件中添加这些路由。创建一个 routes.js 文件并要求它。如果你使用 vue cli 3 就已经是这样了。
  • @Phiter 你的意思是这些来自 API 的新路由?我不太明白它们将如何添加到现有路线中。
  • 没有。我的意思是在主文件中定义你的路线。
  • @Phiter 哦,我明白了。我确实在routes 文件夹中的单独文件index.js 中定义了它们。 :) 我会尝试在main.js 文件中添加新路线。

标签: javascript vue.js vuejs2 router vue-router


【解决方案1】:

你可以这样使用addRoutes:

import router from '@/router'
import Project from './pages/Project'
import Projects from './pages/Projects'

router.addRoutes([{
  path: '/projects',
  name: 'projects.projects',
  component: Projects,
  props: false
}, {
  path: '/projects/:id',
  name: 'projects.project',
  component: Project,
  props: true
}])

来自文档:

动态添加更多路由到路由器。参数必须是一个数组,使用与路由构造函数选项相同的路由配置格式

完整示例:

你有这样的主路由器:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../components/pages/Home';

Vue.use(VueRouter);

const router = new VueRouter({
 mode: 'history',
 routes: [
  {
   path: '/home',
   name: 'home',
   component: Home,
  },
  ],
});

export default router;

现在,您创建一个具有以下结构的新页面。

-- NewPage
   -- NewPage.vue
   -- route.js

route.js 应如下所示:

import router from '@/router' //importing the main router
import NewPage from './NewPage.vue'

router.addRoutes([
  {
    path: '/new-page',
    name: 'newPage',
    component: NewPage,
  },
])

希望我能帮到你。

【讨论】:

  • 感谢您的回答。不幸的是,这对我没有用。当我尝试访问像 `localhost:8080/new-page' 这样的新 url 时,我收到 404 错误,因为这样的页面不存在。 :(
猜你喜欢
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多