- 在main.ts引入
import * as Icons from '@element-plus/icons-vue'
const app = createApp(App)
app.use(ElementPlus).mount('#app')
Object.keys(Icons).forEach((key) => {
app.component(key,Icons[key as keyof typeof Icons])
})
const Icon = (props:{icon:string}) => {
const {icon} = props;
return createVNode(Icons[icon as keyof typeof Icons])
}
app.component('Icon',Icon)
- 在组件中使用
<template>
<!-- 动态组件的使用方式 -->
<!-- 方式一 -->
<component class="icons" :is="menu.meta.icon" />
<!-- 方式二 -->
<Icon class="icons" :icon="menu.mata.icon"></Icon>
</template>