VUE-ELEMENT实现动态菜单递归组件

VUE-ELEMENT实现动态菜单递归组件

        刚入行前端的小伙伴们应该都是在公司框架之上进行开发的吧,菜单路由接口调用都给安排的好好的,需要做的只是创建一个vue,链接上路由,开发业务。
        当然啦,仅会写业务的前端格局还是不够打开的,前端更新如此之快系统风格让人眼花缭乱,说不定哪天产品就会觉得之前的框架怎么这么low,你来再重新搭一个!!!
        怎么用vue脚手架搭建一个使用elementUI库对于看到这里的小伙伴我想应该都了如指掌的,那么在这就只和大家学习一下动态菜单的写法。
在这里插入图片描述
这里咱们就以这种风格为准。

<div :style="{ height: windowHeight - 50 + 'px' }" style="display: flex">
	  <el-menu
        class="el-menu-vertical-demo menuList"
        background-color="#545c64"
        text-color="#fff"
        active-text-color="#ffd04b"
        router
        :collapse="isCollapse"
      >
        	<tree :menu="menu" :isCollapse="isCollapse"></tree>
      </el-menu>
      <el-scrollbar style="height: 100%; flex: 1">
        	<router-view />
      </el-scrollbar>
</div>


import tree from './menuList/tree.vue'
components: {
    tree
},

        由上述贴出的代码可以了解到import引入的tree便是我们需要递归的树形组件,<router-view />就是我们右侧的容器,同时我们需要把我们的菜单列表menu数据传入。
接下来看一下menu组件的写法

<template>
  <div>
    <label v-for="item in menu" :key="item.index">
      <el-submenu :index="item.index" v-if="item.children">
        <template slot="title">
          <i
            :class="item.icon"
            :style="{ color: '#fff' }"
            style="margin-right: 16px"
          ></i>
          <span>{{ item.title }}</span>
        </template>
        <tree :menu="item.children" :isCollapse="isCollapse" />
      </el-submenu>

      <el-menu-item :index="item.index" v-else>
        <template slot="title">
          <i :class="item.icon" :style="{ color: '#fff' }"></i>
          <span>{{ item.title }}</span>
        </template>
      </el-menu-item>
    </label>
  </div>
</template>
<script>
export default {
  name: 'tree',
  props: {
    menu: Array,
    isCollapse: Boolean
  },
}
</script>
<style scoped lang="scss"></style>

        1.由于vue2再template下还不支持多个标签因此我们需要在外边包裹一层div防止报错。
        2.由于我们是自己调用自己,所以不必使用import引入声明,只要把name改成和上方<tree />标签相同即可。
        3.接下来便是很简单的if-else判断了,el-submenu是父级菜单不可进入;el-menu-item为子菜单,也就是我们业务的页面。我们便通过当前数据有无children属性即可判断得出。
        4.接下来我们通过el-menu的router属性,再从router下index.js注册好路由便可进行跳转了!!!
        最后,一直被动态菜单困扰到我的问题就此解决了,也不是想象中的那么难对吧!希望能帮助到您,有错误或不规范的也希望您能指出,也欢迎大家跟我一起交流学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值