vue 学习笔记 【ElementPlus】el-menu 折叠后图标不见了

项目当前版本

{
  
  "dependencies": {
    "@element-plus/icons-vue": "^2.1.0",
    "@types/js-cookie": "^3.0.3",
    "@types/nprogress": "^0.2.0",
    "axios": "^1.4.0",
    "core-js": "^3.8.3",
    "element-plus": "^2.3.8",
    "js-cookie": "^3.0.5",
    "nprogress": "^0.2.0",
    "path-browserify": "^1.0.1",
    "svg-sprite-loader": "^6.0.11",
    "vue": "^3.2.13",
    "vue-router": "^4.0.3",
    "vuex": "^4.0.0"
  },
}

运行过程中,菜单折叠后,图标不见了

<template>
  <template v-if="haspurview(item)">
    <!-- <template v-if="!item.hidden || item.hidden !== true"> -->
    <el-menu-item
      v-if="hasChild(item) == 0"
      :index="resolvePath(item.path)"
      :key="resolvePath(item.path)"
    >
      <template #title>
        <el-icon>
          <component :is="item.meta?.icon" />
        </el-icon>
        <span>{{ item.meta?.title }}</span>
      </template>
    </el-menu-item>

    <!-- <template v-else-if="hasChild(item) == 1 && item.meta?.menuup"> -->

    <el-menu-item
      v-if="hasChild(item) == 1"
      :index="resolvePath(onlyOneChild.path)"
      :key="resolvePath(onlyOneChild.path)"
    >
      <template #title>
        <el-icon>
          <component :is="onlyOneChild.meta?.icon" />
        </el-icon>
        <span>{{ onlyOneChild.meta?.title }}</span>
      </template>
    </el-menu-item>

    <el-sub-menu
      v-if="hasChild(item) > 1"
      :index="resolvePath(item.path)"
      :key="resolvePath(item.path)"
    >
      <template #title>
        <el-icon v-if="item.meta?.icon">
          <component :is="item.meta?.icon" />
        </el-icon>
        <span>{{ item.meta?.title }}</span>
      </template>
      <MenuItem
        v-for="child in item.children"
        :key="child.path"
        :item="child"
      />
    </el-sub-menu>
  </template>
</template>

在这里插入图片描述
图标不见了
在这里插入图片描述

解决办法是
把el-icon 从#title 中提取出来

    <el-menu-item
      v-if="hasChild(item) == 0"
      :index="resolvePath(item.path)"
      :key="resolvePath(item.path)"
    >
      <el-icon>
        <component :is="item.meta?.icon" />
      </el-icon>
      <template #title>
        <span>{{ item.meta?.title }}</span>
      </template>
    </el-menu-item>

运行结果
在这里插入图片描述
el-icon 还是要放于#title里,否则显示不正常

<el-sub-menu
      v-if="hasChild(item) > 1"
      :index="resolvePath(item.path)"
      :key="resolvePath(item.path)"
    >
      <template #title>
        <el-icon v-if="item.meta?.icon">
          <component :is="item.meta?.icon" />
        </el-icon>
        <span>{{ item.meta?.title }}</span>
      </template>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elementplus el-menu是一个基于Vue.js的菜单组件,可用于创建不同类型的菜单,包括垂直菜单、水平菜单和折叠菜单等。以下是elementplus el-menu的用法: 1. 引入el-menu组件: ```javascript import { ElMenu } from 'element-plus'; ``` 2. 在template中使用el-menu组件: ```html <el-menu :default-active="activeIndex" mode="horizontal" @select="handleMenuSelect"> <el-menu-item index="1">菜单1</el-menu-item> <el-submenu index="2"> <template #title>菜单2</template> <el-menu-item index="2-1">子菜单1</el-menu-item> <el-menu-item index="2-2">子菜单2</el-menu-item> </el-submenu> <el-menu-item index="3">菜单3</el-menu-item> </el-menu> ``` 3. el-menu组件的属性和事件: 属性: - default-active:默认选中的菜单项的index值 - mode:菜单模式,可选值为horizontal(水平)和vertical(垂直),默认为vertical - unique-opened:是否只保持一个子菜单展开,可选值为true和false,默认为false - router:是否开启路由模式,可选值为true和false,默认为false 事件: - select:菜单项被选中时触发的事件,参数为选中的菜单项的index值 4. el-menu-item和el-submenu组件: el-menu-item和el-submenuel-menu组件的子组件,用于创建菜单项和子菜单。el-menu-item组件的属性包括: - index:菜单项的唯一标识,必填 - disabled:是否禁用菜单项,可选值为true和false,默认为false el-submenu组件的属性包括: - index:子菜单的唯一标识,必填 - disabled:是否禁用子菜单,可选值为true和false,默认为false el-submenu组件还有一个特殊的插槽,用于自定义子菜单的标题,示例代码中的template #title就是自定义的子菜单标题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值