在Vuejs中动态添加子路由

Nex*_*s23 7 lazy-loading vue.js vue-router dynamic-routing

根据这个官方示例,我们可以在vuejs中添加嵌套/子路由.但我找不到任何关于动态添加这些子路由的方法的帮助/文档.例如,仅在访问父路线时添加子路线.

目前,Vue应用程序中的所有路由都是在我们创建路由器实例的单个位置定义的.有一个名为addRoutes的api ,但我不知道如何使用它在路由旁添加延迟加载的应用程序功能.如果有人熟悉Angular2 + Module系统,那么就可以为该模块中的功能模块定义路由,甚至可以延迟加载它们.想知道VueJs是否可以实现某些目标?

tha*_*ksd 5

您可以$router.addRoutes用来重新添加路线,指定子级。

您需要$route通过在$router.options.routes数组中搜索与current匹配的路由定义对象来获取当前的路由定义(相对于对象)$route.path。然后将children路由定义数组添加到对象,并将其传递给$router.addRoutes

created() {
  let { routes } = this.$router.options;
  let routeData = routes.find(r => r.path === this.$route.path);
  routeData.children = [
    { path: 'bar', component: Bar },
    { path: 'baz', component: Baz },      
  ];
  this.$router.addRoutes([routeData])
}
Run Code Online (Sandbox Code Playgroud)

这是在creaked路由的组件定义的钩子中动态添加子路由的示例。

  • 感谢您的回答。最后一个难题。当我们通常在客户端上导航时,它会起作用,但是在子路径上进行完全重载时,它会中断。完整领域在404年结束。 (3认同)
  • 仍然没有办法通过页面刷新来保留这些数据。如果Vue路由器想要与React Router等类似,它确实需要此功能。 (3认同)