在新项目上首次使用了Ant Design Vue 3.2.3
在做动态导航的时候遇到了一个很棘手的问题:无法动态引用图标。
官方给的例子是按需引入的。
<template>
<home-outlined />
<setting-filled />
<smile-outlined />
<sync-outlined/>
<smile-outlined/>
<loading-outlined />
</template>
<script>
import { defineComponent } from 'vue';
import { HomeOutlined, SettingFilled, SmileOutlined, SyncOutlined, LoadingOutlined } from '@ant-design/icons-vue';
export default defineComponent({
components: {
HomeOutlined,
SettingFilled,
SmileOutlined,
SyncOutlined,
LoadingOutlined,
},
});
</script>
解决方法:
1、新建文件/components/amanIcon.js
import {createVNode} from 'vue'
import * as ICONS from '@ant-design/icons-vue'
export const amanIcon = (props) => {
let { icon } = props;
icon = icon.split("-").map((g) => {
return g[0].toUpperCase() + g.slice(1)
}).join('')
return createVNode(ICONS[icon]);
};
2、使用场景
<template>
//大小驼峰都可以
<amanIcon icon="AppstoreOutlined">
<amanIcon icon="appstore-outlined">
</template>
<script>
import {amanIcon} from "@/components/amanIcon";
export default defineComponent({
components: {
amanIcon,
},
});
</script>