2021-09-29

本文介绍了在VueRouter使用过程中遇到的多级嵌套路由无法渲染的问题及其解决方案。首先,确保每个子路由的父级包含router-view作为出口;其次,理解路由地址的拼接规则,避免在子路由中使用不必要的'/';最后,针对多级嵌套的keep-alive缓存问题,推荐路由扁平化以简化处理。同时,展示了路由配置实例和不同场景下的路径匹配。
摘要由CSDN通过智能技术生成

记录vueRouter 使用中遇到的问题

  1. 多级嵌套路由渲染不出页面
const routerList = [
            { path: '/register', component: register ,name:'register'},
            { path: '/', redirect: '/login' },
            { path: '/1234ttest', redirect: '/test11' }, 
            { path: '/test', 
              component: login ,
              children:[
                    {
                        path: '/test1',
                        component: login,
                        children:[
                            {
                                 path: '/test11',
                                 component: test1,
                            }

                        ]
                      },
                      {
                        path: '/test2',
                        component: test2
                      }
            ]
            }
        ]

VueRouter 的两个主要标签 ,,要想页面渲染出来,必须保证当前路由层级有router-view 的出口。
解决思路:
1 、路由扁平化,将多级路由全部变成一级路由。

			[ { path: '/register', component: register ,name:'register'},
            { path: '/', redirect: '/login' },
            { path: '/1234ttest', redirect: '/test11' }, 
            { path: '/test',  component: login },
            { 
               path: '/test11',
              component: test1,
             },
       		{
                        path: '/test2',
                        component: test2
        }]
            
	2、保证每一个子级的父级都是一个router-view 。
	比如login 组件
 <template id="login">
        <div>
            <h1 style="text-align:center;">login111</h1>
            <div style="width: 100%;height: 500px;background: hotpink;border: 1px solid     #000;">
               <router-view></router-view>
           </div>
        </div>
    </template>

或者直接 componet: {render: (e) => e(“router-view”)};

2、多级路由的地址拼接
在VueRouter中 / 代表根路径
1、子路由地址一级级详细拼接 那么除了最顶级父级外 其他嵌套子项都不能加 /
2、直接显示子路由地址,不拼接父级地址,需要在每一个子项前加一个/

const  testRoute = 
		 [ { path: '/test', 
              component: login ,
              children:[
                    {
                        path: '/test1',
                        component: login,
                        children:[
                            {
                                 path: '/test11',
                                 component: test1,
                            }

                        ]
                      }
            ]
            }];
            //匹配test1  跳转地址就是 /test11 
	const  testRoute = 
		 [ { path: '/test', 
              component: login ,
              children:[
                    {
                        path: 'test1',
                        component: login,
                        children:[
                            {
                                 path: 'test11',
                                 component: test1,
                            }

                        ]
                      }
            ]
            }];
            //匹配test1  跳转地址就是 /test/test1/test11 

3、多级嵌套router-view keep-alive 缓存
在有多级嵌套的情况下,keep-alive 可能不能正确的缓存到我们的目标组件,最有效的解决方式就是,路由扁平化,转化为一级路由。通过css 实现不同的布局方式。

在这里插入图片描述
这边顶部菜单为主菜单,侧边菜单,只在有些特殊菜单才会出现。这边的实现逻辑就是页面都放在主页面APPMAIN中,监控这个route 当发现是特殊菜单那的时候渲染侧边菜单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值