赞
踩
随着vue3
成为默认版本,越来越多的开发者选择vue3进行项目的开发,UI组件库也对Vue3进行了适配,Ant Design Vue3.x
升级后,icon
图标的使用方式有了如下的改变:
要使用icon
需要先引入后在以组件的形式使用:
import { AppstoreOutlined, MessageOutlined, CalendarOutlined} from '@ant-design/icons-vue';
<AppstoreOutlined />
<MessageOutlined />
那么这样就出现了一种问题:如何动态渲染icon图标呢,特别是在我们项目中的侧边导航栏应用上。
第一步:在main.js
中将@ant-design/icons-vue
的所有组件都引入,然后设置一个全局属性存储。
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App);
//引入CSS初始化文件
import './assets/css/base.css'
//ant design组件 全局注册
import Antd from 'ant-design-vue';
//导入组件库
import * as antIcons from '@ant-design/icons-vue'
import './assets/css/myTheme.less'
// 注册组件
Object.keys(antIcons).forEach(key => {
app.component(key, antIcons[key])
})
// 添加到全局
app.config.globalProperties.$antIcons = antIcons
app.use(Antd)
//app挂载
app.mount('#app')
第二步:在组件中使用:
<component :is="$antIcons[item.icon]" />
楼主的动态存储的数据为:
//存储导航侧边栏信息
const asideMenu = reactive([
{
title: "首页",
path: "/main",
name: "Main",
key: 1,
icon: "AppstoreOutlined",
},
{
title: "我的一天",
path: "/day",
name: "Day",
key: 2,
icon: "CarryOutOutlined",
},
{
title: "任务清单",
path: "/task",
name: "Task",
key: 3,
icon: "MessageOutlined",
},
{
title: "倒数日",
path: "/date",
name: "Date",
key: 4,
icon: "CalendarOutlined",
},
{
title: "备忘录",
path: "/memorandum",
name: "Memorandum",
key: 5,
icon: "HighlightOutlined",
},
{
title: "设置",
path: "/setting",
name: "Setting",
key: 6,
icon: "SettingOutlined",
},
]);
本文到此结束啦,喜欢的小伙伴可以点个赞关注下。
其实楼主还尝试过其他办法,例如v-html
等其他办法,但是都没有这个好用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。