当前位置:   article > 正文

Vue3使用element-plus1.3.0版本的el-menu菜单组件引入动态渲染icon图标时,图标组件刚好是Menu时报错,菜单不显示的解决方法_el-menu icon

el-menu icon

目前在升级前端框架,UI组件element-plus升级到了目前最新的1.3.0beta8版本,图标也换成了官方提供的SvgIcon图标,官方提供了组件导入的方式使用图标。而我的图标是全局导入的,默认使用官方的命名。在菜单栏使用图标,并且是动态渲染的,刚好用到图标组件名称是Menu时,点击带有这个图标名称的菜单,就出问题了,导致其他菜单不显示。

 

下面是在main.js中全局引入图标的方法:

  1. import {createApp} from 'vue'
  2. import App from './App.vue'
  3. import ElementPlus from 'element-plus';
  4. import zhCn from 'element-plus/es/locale/lang/zh-cn';//ElementPlus 组件内部默认使用英语,使用中文语言
  5. import 'element-plus/dist/index.css';
  6. import * as ElIconModules from '@element-plus/icons';//导入所有element icon图标
  7. const app = createApp(App);
  8. app.use(ElementPlus, {
  9. locale: zhCn,//使用中文语言
  10. })
  11. // 全局注册element-plus icon图标组件
  12. Object.keys(ElIconModules).forEach((key) => {
  13. app.component(key, ElIconModules[key]);
  14. });
  15. app.mount('#app')

  

最后使用排出法才确定是个图标组件的名称导致的bug,后面就换了一个图标组件。然后,也向官方提交了这个bug,官方开发成员建议换个名称,在main.js里这样导入,单独命名:

import { Menu as MenuIcon } from '@element-plus/icons-vue'

最后,我只直接换了一个其他icon组件,然后我提交了issues,建议他们重新改下命名方式。链接:[Bug Report] el-menu菜单组件引入动态渲染icon图标时,图标组件刚好是Menu时报错,菜单不显示 · Issue #5570 · element-plus/element-plus · GitHub

 如果你目前一定要动态渲染使用Menu这个icon图标的话,全局导入时重起一个其他别名也可以,修改后的main.js代码如下:

  1. import {createApp} from 'vue'
  2. import App from './App.vue'
  3. import ElementPlus from 'element-plus';
  4. import zhCn from 'element-plus/es/locale/lang/zh-cn';//ElementPlus 组件内部默认使用英语,使用中文语言
  5. import 'element-plus/dist/index.css';
  6. import * as ElIconModules from '@element-plus/icons';//导入所有element icon图标
  7. const app = createApp(App);
  8. app.use(ElementPlus, {
  9. locale: zhCn,//使用中文语言
  10. })
  11. // 全局注册element-plus icon图标组件
  12. Object.keys(ElIconModules).forEach((key) => {//循环遍历组件名称
  13. if ("Menu" !== key) {//如果不是图标组件不是Menu,就跳过,否则加上ICon的后缀
  14. app.component(key, ElIconModules[key]);
  15. } else {
  16. app.component(key + "Icon", ElIconModules[key]);
  17. }
  18. });
  19. app.mount('#app')

然后,你存数据库的图标名称也要是你重命名的这个MenuIcon名称才行,因为for循环菜单组件那要匹配。这样就正常了。

 


参考文献:

1、[Bug Report] el-menu菜单组件引入动态渲染icon图标时,图标组件刚好是Menu时报错,菜单不显示 · Issue #5570 · element-plus/element-plus · GitHub

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/320870
推荐阅读
相关标签
  

闽ICP备14008679号