使用element-ui二次封装一个可复用树形菜单组件

源码链接:树形菜单组件

<template>
    <div>
        <div v-for="item in menus" :key="item.id" :index="item.menuUrl">
            <!-- 有子菜单 -->
            <el-submenu :index="item.menuUrl" v-if="item.children">
                <template slot="title" >
                    <i :class="item.menuIcon" style="30px;"></i>
                    <span slot="title"  style="margin-left:10px;" >{{ item.menuName }}</span>
                </template>
                <tree-menu :menus="item.children" ></tree-menu>
            </el-submenu>
            <!-- 无子菜单 -->
            <el-menu-item :index="item.menuUrl" v-else >
                <i :class="item.menuIcon" style="30px;"></i>
                <span slot="title" style="margin-left:10px;">{{ item.menuName }}</span>
            </el-menu-item>
        </div>
    </div>
</template>
<script>
    export default {
        props: ['menus'],
        name: 'tree-menu',
    }
    
</script>

使用时:

<template>
  <el-row class="main-wrap">
    <el-col :span="3" class="left-nav">
      <el-menu
        class="left-nav-list"
        :router='true'
        background-color="#070916"
        text-color="#fff"
        :default-active="$route.path"
      >
        <tree-menu :menus="leftmenus"></tree-menu>
      </el-menu>
    </el-col>
    <el-col :span="21" class="right-content">
      <transition name="fade" mode="out-in">
        <router-view/>
      </transition>
    </el-col>
  </el-row>
</template>

<script>
import treeMenu from '@/components/common/TreeMenu/treeMenu'
export default {
  name: 'Base',
  data(){
    return {
      leftmenus:[
        {menuName:'用户管理',menuUrl:'/Base/user'}
      ]
    }
  },
  components:{treeMenu}
}
</script>
<style scoped lang="stylus">
</style>

原文地址:https://www.cnblogs.com/xingguozhiming/p/13154563.html