vue3动态渲染Element-plus带图标的菜单项

1、需求:

左侧的这个带图标的菜单项需要动态渲染出来。
在这里插入图片描述

2、思路:

如果不用渲染,直接写:

<el-menu-item index="1">
  <el-icon size="32">
    <House />
  </el-icon>
  <span>主页</span>
</el-menu-item>

可以看到,icon图标是以一个组件的形式进行渲染的。
那么用v-for进行列表渲染的时候,这个图标的组件怎么渲染出来,成了个难题。
直接用双花括号{{}}肯定是不行的,直接会把标签搞成文本,
v-html也不行,它只能渲染原生的HTML标签。

3、实现方法

html部分:

<el-menu-item :index="item.key" v-for="(item, index) in menuList" :key="index">
  <template #default>
    <el-icon size="32">
      <component :is="item.icon" />
    </el-icon>
    <span>{{ item.name }}</span>
  </template>
</el-menu-item>

js部分:

<script setup>
import { ref } from "vue";
import { House, Clock, Document, FolderAdd } from "@element-plus/icons-vue";
let menuList = ref([
  {
    key: "1",
    name: "主页",
    icon: <House />,  //重点在这里。看到别人写的实现方法是icon:"House",但是我尝试了无效。
    path: "/visit",
  },
  {
    key: "2",
    name: "历史记录",
    icon: <Clock />,
    path: "/visit",
  },
  {
    key: "3",
    name: "草稿",
    icon: <Document />,
    path: "/visit",
  },
  {
    key: "4",
    name: "自定义",
    icon: <FolderAdd />,
    path: "/visit",
  },
]);
</script>

这样就实现啦~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值