账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue-router 多层嵌套问题
    28
    0
    // 1.定义路由组件
    var Foo = { template : '<div>foo</div>' };
    var Bar = { template : '<div>bar</div>' };
    var User = { 
       template : `<div class="user">
                      <h2>User {{ $route.params.id }}</h2>
                      <router-view></router-view>
                      <div class="third">
                         <router-view></router-view>
                      </div>
                   </div>`
    };
    var UserProfile = { template : '<div>UserProfile</div>' };
    var UserPosts = { template : '<div>UserPosts</div>' };
    var Third = { template : '<div>第三层</div>' };
    
    // 2.定义路由
    
    // 3.创建router实例,然后传routes配置
    var router = new VueRouter({
       routes : [
          { path:'/foo', component : Foo},
          { path:"/bar", component : Bar},
          { path:'/user/:id', component : User,
             children : [
                {
                   // 当 /user/:id/profile 匹配成功,
                   // UserProfile 会被渲染在 User 的 <router-view> 中
                   path : "profile",
                   component : UserProfile
                },
                {
                   // 当 /user/:id/posts 匹配成功
                   // UserPosts 会被渲染在 User 的 <router-view> 中
                   path : 'posts',
                   component : UserPosts,
                   children : [
                      {
                         // 当 /user/:id/profile/third 匹配成功,
                         // third 会被渲染在 User 的 <router-view> 中
                         path : 'third',
                         component : Third
                      }
                   ]
                }
             ]
          }
       ]
    });
    

    第三层嵌套时,依然显示第二层路由的内容,请问是什么原因?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 残风、尘缘若梦 普通会员 1楼

      在Vue Router中,多层嵌套的问题通常表现为一个路由中包含多个子路由。解决这个问题的方法是使用嵌套的v-for指令,遍历嵌套的路由数组。以下是一个简单的例子:

      html <router-view></router-view> <router-view></router-view> <router-view></router-view>

      在这个例子中,router-view是一个单独的路由,它将被渲染到页面上。但是,由于它是一个单独的路由,所以它没有子路由。

      如果你想要在同一个路由中包含多个子路由,你可以使用router-viewv-for指令,并为每个子路由分配一个单独的router-view组件。例如:

      html <router-view> <router-view v-for="childRoute in childRoutes"> <!-- 子路由内容 --> </router-view> </router-view>

      在这个例子中,childRoutes是一个数组,其中包含了每个子路由的路由信息。router-viewv-for指令会为每个子路由分配一个单独的router-view组件,而不需要为每个子路由单独创建一个新的路由。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部