el-menu 折叠后小箭头不会消失

官方示例

vue 复制代码
<template>
  <el-radio-group v-model="isCollapse" style="margin-bottom: 20px">
    <el-radio-button :value="false">expand</el-radio-button>
    <el-radio-button :value="true">collapse</el-radio-button>
  </el-radio-group>
  <el-menu
    default-active="2"
    class="el-menu-vertical-demo"
    :collapse="isCollapse"
    @open="handleOpen"
    @close="handleClose"
  >
    <el-sub-menu index="1">
      <template #title>
        <el-icon><location /></el-icon>
        <span>Navigator One</span>
      </template>
      <el-menu-item-group>
        <template #title><span>Group One</span></template>
        <el-menu-item index="1-1">item one</el-menu-item>
        <el-menu-item index="1-2">item two</el-menu-item>
      </el-menu-item-group>
      <el-menu-item-group title="Group Two">
        <el-menu-item index="1-3">item three</el-menu-item>
      </el-menu-item-group>
      <el-sub-menu index="1-4">
        <template #title><span>item four</span></template>
        <el-menu-item index="1-4-1">item one</el-menu-item>
      </el-sub-menu>
    </el-sub-menu>
    <el-menu-item index="2">
      <el-icon><icon-menu /></el-icon>
      <template #title>Navigator Two</template>
    </el-menu-item>
    <el-menu-item index="3" disabled>
      <el-icon><document /></el-icon>
      <template #title>Navigator Three</template>
    </el-menu-item>
    <el-menu-item index="4">
      <el-icon><setting /></el-icon>
      <template #title>Navigator Four</template>
    </el-menu-item>
  </el-menu>
</template>

我的代码

diff 复制代码
<el-menu
    router
    :default-active="route.path"
    class="sidebar-menu"
    :collapse="isCollapse"
    :unique-opened="true"
  >
    <div v-for="item in menuList" :key="item.name">
      <el-sub-menu v-if="item.children && item.children.length > 0" :index="item.path">
        <template #title>
          <el-icon class="menu-icon" v-if="item.meta && item.meta.icon">
            <component :is="item.meta.icon" />
          </el-icon>
          <!--默认图标-->
          <el-icon class="menu-icon" v-else>
            <component :is="Operation" />
          </el-icon>
          <span>{{ item.name }}</span>
        </template>

代码逻辑中遍历menuList动态添加菜单,问题就出在这里,div破坏了原有的菜单结构,会出现奇怪的问题

总结

  • 使用template替换原来的div标签,<template v-for="item in menuList" :key="item.name">
  • 必须保持原有的菜单结构完整性,el-menu直接包含el-sub-menu或者el-menu-item
  • 网上大多数办法是通过修改css样式才生效,实际上都是破坏了原有的结构后的不必要操作
相关推荐
梵得儿SHI12 分钟前
Vue 开发环境搭建全指南:从工具准备到项目启动
前端·javascript·vue.js·node.js·pnpm·vue开发环境·nvm版本管理
八月ouc26 分钟前
每日小知识点:10.14 webpack 有几种文件指纹
前端·webpack
苏琢玉29 分钟前
从 Hexo 到 Astro:重构我的个人博客
前端·hexo
Glommer32 分钟前
某音 Js 逆向思路
javascript·逆向
街尾杂货店&36 分钟前
webpack - 单独打包指定JS文件(因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改)
前端·javascript·webpack
月光技术杂谈37 分钟前
用Deepseek 实现一个基于web的扣图应用
前端·javascript·html5·ccs·tensorflow.js·canvas api
金梦人生1 小时前
Css性能优化
前端·css
Holin_浩霖1 小时前
UI设计的底层逻辑:从组件到系统的跃迁
前端
Holin_浩霖1 小时前
前端开发者的 Web3 全图解实战 二
前端
写代码的皮筏艇2 小时前
CSS属性继承与特殊值
前端·css