el-menu--多级菜单封装使用

本文记录了在前端项目中如何封装和使用el-menu组件,包括menuItem.vue组件的实现和LeftMenu.vue中引用组件的示例。虽然当前示例为三级菜单的静态写法,但强调了需要通过循环优化以适应动态数据。
摘要由CSDN通过智能技术生成

代码只做简单记录,细节需要去调试

1、组件:menuItem.vue

<template>
  <div>
    <template v-for="(item, index) in data">
      <!-- 因为有子集和无子集渲染html标签不一样,所以要分为两种情况
           情况一:有子集的情况:                         -->
      <el-submenu :key="index" :index="String(index + 1)"  v-if="item.children.length > 0">
        <template slot="title">
          <span>{
  { item.name }}</span>
        </template>
        <menuItem :data="item.children"></menuItem>
      </el-submenu>
      <!-- 情况二:没子集的情况 -->
      <el-menu-item :key="index" v-else :index="String(index + 1)">
        <span slot="title">{
  { item.name }}</span>
      </el-menu-item>
    </template>
  </div>
</template>

<script>
export default {
  name: "menuItem",
  props: {
    data: {
      type: Array,
      default: [],
    },
  },
  // 注意: 在template标签上使用v-for,:key="index"不能写在template标签上,因为其标签不会被渲染,会引起循环错误
};

</script>

2、LeftMenu.vue 引用组件使用:

<template>
<!--   -->
  <el-menu :default-openeds="defaultOpeneds"
           :default-active="defaultActive"
           @select="selectMenu"
           v-loading="loading">
    <!-- 组件 -->
    <menuItem :data="menuArr"></menuItem>
  </el-menu>
</template>
<script>
 // 引入递归菜单组件
import menuItem from '@/views/business/learning/components/newPage/took/menuItem.vue'
import { getLeftList, getExamLeftList } from '@/api/business/learning'
export default {
  name: 'LeftMenu',
  mixins: [],
  components: {menuItem},
  props: {
    type: {
      type: Number,
      default: 1
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左手牵♪♡右手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值