最近做项目,使用antd+vue构建项目
使用antdv的图标比较简单
加上type的字符串就行了
<a-icon type="down" />
动态渲染路由菜单就是这样,只要改变type就行了
<a-menu
theme="light"
mode="inline"
:selectedKeys="[this.$route.path]"
:defaultOpenKeys="[defaultOpenKeys]"
>
<a-sub-menu v-for="item in layout" :key="item.path">
<span slot="title">
<a-icon :type="item.meta.icon" />
<span>{{ item.meta.title }}</span>
</span>
<a-menu-item v-for="child in item.children" :key="child.path">
<router-link :to="child.path">{{ child.meta.title }}</router-link>
</a-menu-item>
</a-sub-menu>
</a-menu>
那么antd的图标不是自己想要的怎么办
如果是单独使用,可以直接下载自己想要的图片用img标签替换图标就好了
如果是动态路由菜单的渲染想和antd的用法一样改变type怎么办
也容易,写自定义组件
首先去iconfont下载你想用的图标保存为图片,也可以和ui小姐姐要
我是ui给的图
直接贴代码吧,因为是本地图片,所以用require引入
//自定义组件,type是图片的名字,所以在父组件中使用自定义组件时type的名字要和图片的名字保持一致
<template>
<div>
<div class="my-icon">
<img :src="require('@/assets/images/' + type + '.png')" />
</div>
</div>
</template>
<script>
export default {
data() {
return {};
},
props: {
type: String,
},
};
</script>
<style scoped>
.my-icon {
width: 20px;
height: 20px;
}
.my-icon img {
width: 100%;
height: 100%;
}
</style>
然后在组件里使用,就可以实现和antd图标一样的用法啦
<template>
<div>
<div>
<!-- 使用自定义图标 -->
<my-icon type="home"></my-icon>
</div>
</div>
</template>
<script>
import MyIcon from "@/components/MyIcon.vue";
export default {
components: {
MyIcon,
},
};
</script>
<style scoped></style>