问题描述
el-menu直接嵌套el-menu-item菜单,折叠时不会出现文字显示和小箭头无法隐藏的问题,但是实际开发需求中难免需要把el-menu-item封装为组件
解决
vue3项目中嵌套两层template
<template><template v-for="item in list" :key="item.path"><!-- 一级路由 --><el-menu-item v-if="!item.children && !item.meta?.hidden" :index="item.path"><el-icon size="30px"><component :is="item.meta?.icon"></component></el-icon><template #title><span class="ml-1">{{ item.meta?.title }}</span></template></el-menu-item><!-- 二级路由但只有一个子项 --><el-menu-item v-if="(item.meta?.single && item.children) && !item.meta?.hidden" :index="item.children[0].path"><el-icon size="30px"><component :is="item.children[0].meta?.icon"></component></el-icon><template #title><span class="ml-1">{{ item.children[0].meta?.title }}</span></template></el-menu-item><!-- 二级路由 --><el-sub-menu :index="item.path" v-if="(item.children && item.children.length > 1) && !item.meta?.hidden"><template #title><el-icon size="30px"><component :is="item.meta?.icon"></component></el-icon><span class="ml-1">{{ item.meta?.title }}</span></template><!-- 递归路由 --><MenuItem :list="item.children"></MenuItem></el-sub-menu></template>
</template>