【问题标题】:Nested routes vue default嵌套路由 vue 默认
【发布时间】: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>

这里的想法是保留一个侧边栏并在一边渲染

  1. mainchild1.vue(在 /main/mainchild1 上)
  2. mainchild2.vue(在 /main/mainchild1 上)

现在,如果 url 中没有指定路由,我想重定向到主组件 (/main),但至少填充了子视图(mainchild1 或 mainchild2)。

这是我苦苦挣扎的地方,感谢任何帮助/提示。

我尝试将“/”上的重定向到 /main/mainchild1,但它只是渲染根内容,使用 mainchild1.vue,因此删除了侧边栏。

我还在学习 vue,可能还缺少一些路由技术的步骤。

更新

好的,看来我应该从子元素中删除 /。这样就可以了。

决定这是否有任何帮助,或者我应该删除它 谢谢 大卫

【问题讨论】:

  • 通过从子路由中删除/,子路由变得相对于父路由并最终形成/&lt;parent-routes&gt;/&lt;child-route&gt;,您可以通过从/开始路径来实现以下解决方案中建议的相同例如。 /&lt;parent&gt;/&lt;child&gt; 作为替代方案。
  • 另外,您曾提到,“您尝试将/ 重定向到/main/mainchild1,但它只是呈现了根内容”。要按照以下解决方案中的建议解决此问题,您可以使用路由对象中的redirect 键将/ 重定向到/main/mainchild1

标签: vue.js


【解决方案1】:

route.js

[
  path: '/', redirect: '/main/mainchild1',
  path: '/main', redirect: '/main/mainchild1', component: 'main.vue', children: [
    { path: '/main/mainchild1', component: mainchild1.vue },
    { path: '/main/mainchild2', component: mainchild2.vue }
  ] 
]

app.vue

<template>
 <sidebar v-if="isLoggedIn"/>
 <router-view></router-view> <!-- components mapped with route '/' or '/main' will render here -->
</template>

main.vue

<template>
 <router-view></router-view> <!-- components mapped with route '/main/mainchild1' or '/main/mainchild2' will render here -->
</template>

【讨论】:

  • 问题是app.vue在登录页面的情况下不应该有侧边栏
  • 在这种情况下,您可以添加带有boolean 值的v-if 指令,该值根据登录状态(getter/computed)返回 true/false。根据this更新了代码。
  • v-if 指令将阻止 sidebar 在用户未登录的情况下在 dom 上呈现。
猜你喜欢
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2018-03-25
相关资源
最近更新 更多