el-menu无限递归组件完美版本

el-menu无限递归组件完美版本

备注:修复菜单和子菜单高亮问题,及刷新后被点击子菜单依旧打开的bug

效果

el-menu无限递归组件完美版本_第1张图片

代码

index.vue (递归组件)





router.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const originalPush = VueRouter.prototype.push
   VueRouter.prototype.push = function push(location) {
   return originalPush.call(this, location).catch(err => err)
}

const routes = [
  {
    path: '/Home',
    name: 'Home',
    component: Home
  },
  {
    path: '/',
    name: 'Header',
    component: () => import(/* webpackChunkName: "header" */ '../views/header.vue'),
    children: [
      {
          path: '/model/onesetchildone', // 一组子1路由
          name: 'onesetchildone',
          component: () => import(/* webpackChunkName: "onesetchildone" */ '../views/model/onesetchildone.vue')
      },
      {
          path: '/model/onesetchildtwo', // 一组子2路由
          name: 'onesetchildtwo',
          component: () => import(/* webpackChunkName: "onesetchildtwo" */ '../views/model/onesetchildtwo.vue')
      },
      {
          path: '/model/twosetchildone', // 二组子1路由
          name: 'twosetchildone',
          component: () => import(/* webpackChunkName: "twosetchildone" */ '../views/model/twosetchildone.vue')
      },
      {
          path: '/model/twosetchildtwo', // 二组子2路由
          name: 'twosetchildtwo',
          component: () => import(/* webpackChunkName: "twosetchildtwo" */ '../views/model/twosetchildtwo.vue')
      },
      {
          path: '/model/threeset', // 三组路由
          name: 'threeset',
          component: () => import(/* webpackChunkName: "threeset" */ '../views/model/threeset.vue')
      },
      {
          path: '/model/fourset',  // 四组路由
          name: 'fourset',
          component: () => import(/* webpackChunkName: "fourset" */ '../views/model/fourset.vue')
      },
  ]
  }
]

const router = new VueRouter({
  routes
})

export default router

menutree.vue






上面代码18-22行使用的是ui切的svg,下面代码这几行是使用elementui的图标
在这里插入图片描述

总结:拿到浏览器url里的当前路由名字,监听,让这个名字和菜单id做映射,成功的就高亮

你可能感兴趣的:(项目,vue)