import { defineComponent, createVNode, watchEffect } from 'vue'; import * as $Icon from '@ant-design/icons-vue'; import { createFromIconfontCN } from '@ant-design/icons-vue'; import './iconfont'; let MyIcon = createFromIconfontCN({ scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // 在 iconfont.cn 上生成 }); const aIcon = $Icon; const AntdIcon = (props: { type: string }) => createVNode(aIcon[props.type]); const Icon = (props: any) => Object.keys(aIcon).includes(props.type) ? ( ) : ( ); export default defineComponent({ name: 'AIcon', // 传入组件配置 props: ['type', 'scriptUrl', 'class'], emits: ['click'], setup(props, { emit, attrs }) { watchEffect(() => { if (props.scriptUrl) { MyIcon = createFromIconfontCN({ scriptUrl: props.scriptUrl, }); } }); const click = () => { emit('click'); }; // const render = () => { // return // }; return () => ; }, });