关于vue 路由 vue-router中嵌套路由中无限嵌套?-灵析社区

全能人才

在用vue仿写B站的组件切换效果。 效果:iphone上B站App中,从B站app首页点击一个视频,进入【视频播放页】,点击【视频播放页】中up主的头像,进入【up主的主页】,然后点击【up主的主页】中的视频,又显示【视频播放页】,然后就可以在【视频播放页】 ⇆ 【up主的主页】之间无限的进行下去。 显示新页面时并没有覆盖前面已显示的页面,而是从右侧滑动显示盖在当前页面上。因此我最初是写成嵌套路由 routes: [ { path: '/', component: () => import('@/views/index.vue'), // B站首页 children: [ { path: 'video/:videoId/', component: () => import('@/views/Video.vue'), // 视频播放页 children: [ { path: 'up/:upId', component: () => import('@/views/Up.vue'), // up主的个人主页 } ] } ] }, ] '/' --> B站首页 '/video/2342' --> 视频播放页 '/video/2342/up/353' --> up主的个人主页 问题是,当路由是'/video/2342/up/353'显示了up主的个人主页的个人主页时,我继续点击视频进入视频播放页时的路由该怎么设置呢。从app上的效果来看,似乎是个无限的嵌套路由,可我没法把路由配置成无限进行下去啊。如果不是嵌套路由的话当然好解决了,只用一个,每显示新组件都把前面的组件覆盖就行了,但那样又没法实现显示的新页面是盖在前面的组件上的效果。 希望有了解的前辈能提供点思路。

阅读量:16

点赞量:0

问AI
其实就是一个平级的路由模式,也就是这样的一个路由结构: routes: [ { path: '/', component: () => import('@/views/index.vue'), // B站首页 children: [ { path: 'video/:videoId/', component: () => import('@/views/Video.vue'), // 视频播放页 }, { path: 'up/:upId', component: () => import('@/views/Up.vue'), // up主的个人主页 } ] }, ] 至于你说的 "显示新页面时并没有覆盖前面已显示的页面,而是从右侧滑动显示盖在当前页面上" 这块其实就是Vue提供的 "Transition" 功能,包裹在 "" 组件外部即可。👉 "Transition | Vue.js" (https://link.segmentfault.com/?enc=DaNHwG5L8S%2FTlfJeyaf2uA%3D%3D.BL3CgUV6O0tuNezpmj3hnO46bxeTkq5G1KWIgd%2BZYVvkcl%2Bwu9bWyIyr4vgeUVQzcjX7c1xZrAz64v819ZfahpEcEAe4RQgXNExfihKKsrA%3D)。 *** 可以多学习一些其他项目的路由设计,"Transition" 的部分可以在社区里面搜索 “Vue过渡与动画” 这个关键词学习。比如说 👉 "Vue 教程第九篇 —— 动画和过度效果" (https://segmentfault.com/a/1190000014463082)