vue-route的路由配置中父组件没有component怎么处理

11 篇文章 0 订阅

概述

        为了方便开发和维护,所以web前端的路由配置路径和前端代码文件路径一般是一致的。但在实际开发中,项目可能会分很多级的菜单,由于很多菜单只有叶子菜单是真正的页面。而中间菜单项只是一个路由配置。

       为了正确路由到底层的功能页面,我们要创建很多个只包含<router-view />的页面。

{
            path: '/',
            name: 'all',
            redirect: '/home',
        },
        {
            path: '/home',
            name: 'home',
            component: () => import('@/views/menu/index.vue'),   //真正的菜单页面
            redirect: '/home/parent1',
            children:[
                {
                    path: 'parent1',
                    name: 'parent1',
                    redirect: '/home/parent1/parent11',
                    component: () => import('@/views/parent1/index.vue'),  //只<router-view />的页面
                    children:[
                        {
                            path:"parent11",
                            name:'parent11',
							redirect: '/home/parent1/parent111',
                            component: () => import('@/views/parent1/parent11/index.vue'), //只<router-view />的页面
							children:[
								{
									path:"parent111",
									name:'parent111',
									component: () => import('@/views/parent1/parent11/parent111/index.vue')  //功能页面
								},
								{
									path:"parent112",
									name:'parent112',
									component: () => import('@/views/parent1/parent11/parent112/index.vue')  //功能的页面
								}
							]
                        },
                        {
                            path:"parent2",
                            name:'parent1',
                            component: () => import('@/views/parent1/index.vue') //只<router-view />的页面
                        }
                    ]
                }
            ]
        }

所以我们创建了很多一样的页面:

<template>

        <router-view/>

</template>

 解决

            我们可以通过直接在conponent里直接配置<router-view>组件来解决这个问题。直接导入的方式如下:

component: { render: c => c("router-view")},

修改之后的路由配置如下:

{
            path: '/',
            name: 'all',
            redirect: '/home',
        },
        {
            path: '/home',
            name: 'home',
            component: () => import('@/views/menu/index.vue'),   //真正的菜单页面
            redirect: '/home/parent1',
            children:[
                {
                    path: 'parent1',
                    name: 'parent1',
                    redirect: '/home/parent1/parent11',
                    component: { render: c => c("router-view")},
                    children:[
                        {
                            path:"parent11",
                            name:'parent11',
							redirect: '/home/parent1/parent111',
                            component: { render: c => c("router-view")},
							children:[
								{
									path:"parent111",
									name:'parent111',
									component: () => import('@/views/parent1/parent11/parent111/index.vue')  //功能页面
								},
								{
									path:"parent112",
									name:'parent112',
									component: () => import('@/views/parent1/parent11/parent112/index.vue')  //功能的页面
								}
							]
                        },
                        {
                            path:"parent2",
                            name:'parent1',
                            component: () => import('@/views/parent1/index.vue') //只<router-view />的页面
                        }
                    ]
                }
            ]
        }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值