前言
在项目中,用了element-plus的菜单组件时,使用Nuxt3 的nuxt-icon
组件,页面一直显示不出图标。
发现问题
el-sub-menu
中使用它自己的el-icon
组件图标是可以正常显示的。- 但是
el-sub-menu
中使用nuxt-icon
组件,图标却显示不出来。
找到原因
查看控制台发现,el-icon
组件是被i
标签包裹的,而nuxt-icon
是被一个span
标签包裹,element-plus 菜单组件在垂直菜单折叠时,el-sub-menu
的默认行为是隐藏其标题中的文本部分,会给el-sub-menu
的title插槽
用span
包裹起来,并且给它设置了不可见样式。
解决方案
所以手动把nuxt-icon
用其他标签(如:i
)包裹,这样就可以显示图标了。
<el-sub-menu
v-if="item.children && item.children.length > 0"
:index="item.path"
>
<template #title>
<!-- <el-icon><icon-menu /></el-icon> -->
<i><nuxt-icon :name="item.meta.icon"></nuxt-icon></i>
<span>{{ item.meta.title }}</span>
</template>
<EpMenu :routeList="item.children" />
</el-sub-menu>