【发布时间】:2020-06-01 12:42:52
【问题描述】:
我有这个根 vue 组件
<template>
<router-view></router-view>
</template>
Router-view 应该匹配 /main、/login url,如下面的路由所示
{path: '/login',component: 'login.vue'}
{path: '/main',component: 'main.vue', children:[
{path: '/mainchild1',component: 'mainchild1.vue'},
{path: '/mainchild2',component: 'mainchild2.vue'
]}
主要组件是侧边栏和内容视图,应使用 /main 子项填充:
//Main.vue
<template>
<sidebar></sidebar>
<router-view></router-view>
</template>
这里的想法是保留一个侧边栏并在一边渲染
- mainchild1.vue(在 /main/mainchild1 上)
- mainchild2.vue(在 /main/mainchild1 上)
现在,如果 url 中没有指定路由,我想重定向到主组件 (/main),但至少填充了子视图(mainchild1 或 mainchild2)。
这是我苦苦挣扎的地方,感谢任何帮助/提示。
我尝试将“/”上的重定向到 /main/mainchild1,但它只是渲染根内容,使用 mainchild1.vue,因此删除了侧边栏。
我还在学习 vue,可能还缺少一些路由技术的步骤。
更新
好的,看来我应该从子元素中删除 /。这样就可以了。
决定这是否有任何帮助,或者我应该删除它 谢谢 大卫
【问题讨论】:
-
通过从子路由中删除
/,子路由变得相对于父路由并最终形成/<parent-routes>/<child-route>,您可以通过从/开始路径来实现以下解决方案中建议的相同例如。/<parent>/<child>作为替代方案。 -
另外,您曾提到,“您尝试将
/重定向到/main/mainchild1,但它只是呈现了根内容”。要按照以下解决方案中的建议解决此问题,您可以使用路由对象中的redirect键将/重定向到/main/mainchild1。
标签: vue.js