使用 Element-UI 的 navMenu 组件实现无限级下拉导航菜单并实现路由跳转和默认当前路由高亮样式

看过Element-UI的导航菜单组件的文档的同学应该了解到文档的demo都是有限级的菜单,然而现实场景业务通常有可能是这样子:
(1)菜单由后台接口返回;
(2)前端写死,但是业务需求是不定级别的导航菜单。下面就为实现无限级下拉导航菜单献上code!
一:实现无限级下拉的思路是:递归菜单数组数据。
二:实现操作是:组件调用自己本身从而达到实现递归菜单数据。

(1)父组件:menu.vue

// menu.vue

     
 

(2)子组件:child-menu 实现无限级下拉菜单,递归数据,组件调用自己本身完成需求。

// child-menu.vue



(3)menu的数据结构参考:

// 路由只需设置最深一级菜单的即可
menu: [
		// 三级菜单
        {
            name: '菜单三',
            route: '/',
            children: [
                {
                    name: '菜单三__1',
                    route: '/',
                    children: [
                        {
                            name: '菜单三__1-1',
                            route: '/console/one'
                        },
                        {
                            name: '菜单三__1-2',
                            route: '/console/two'
                        }
                    ]
                }
            ]
        },
        {
            name: '菜单二',
            route: '/',
            children: [
                {
                    name: '菜单二__1',
                    route: '/second/one'
                },
                {
                    name: '菜单二__2',
                    route: '/second/two'
                }
            ]
        },
        // 一级菜单
        {
            name: '菜单一',
            route: '/third',
            ]
        }
    ]

以上就是使用 navMenu 组件实现无限级下拉导航菜单。
总结:
(1)实现无限级下拉的思路就是递归菜单数组,子组件调用自己本身完成递归渲染。
(2)要使用默认的vue-router完成路由跳转需要设置router,并且index属性赋值为各个菜单项的path。
(3)要默认高亮显示当前路由菜单项,需要设置default-active="$route.path"。

你可能感兴趣的:(Element,UI)