在vue3+vite中使用svg-sprite-loader,antdv修改菜单icon

本文主要是介绍在vue3+vite中使用svg-sprite-loader,antdv修改菜单icon,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 安装

npm install vite-plugin-svg-icons -D

2. 在vite.config.js的plugins中添加配置项

import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';createSvgIconsPlugin({iconDirs: [resolve(process.cwd(), 'src/components/svgIcon/svg')], // icon存放的目录,自定义symbolId: 'icon-[name]', // symbol的命名inject: 'body-last', // svg插入的位置customDomId: '__svg__icons__dom__' // svg的id
})

3. 封装svgIcon组件

组件vue文件,index.vue:

<template><svg :class="svgClass" aria-hidden="true"><use :xlink:href="iconName" /></svg>
</template><script setup lang="ts">import { computed } from 'vue';const props = defineProps({iconClass: {type: String,required: true},className: {type: String,default: () => ''}});const iconName = computed(() => {return `#icon-${props.iconClass}`;});const svgClass = computed(() => {return props.className ? `svg-icon ${props.className}` : 'svg-icon';});
</script><style scoped lang="less">.svg-icon {fill: currentColor;}
</style>

svgIcon全局组件,index.ts

import { App } from 'vue';
import SvgIcon from '@/components/svgIcon/index.vue';export default (app: App) => {app.component('SvgIcon', SvgIcon);
};

4. 全局注册组件

在main的ts中引入index.ts,用app.use注册,引入virtual:svg-icons-register

import 'virtual:svg-icons-register';
import initSvgIconfrom '@/components/svgIcon/index';app.use(initSvgIcon);

5. 使用

<a-menuv-model:selectedKeys="selectMenuId"v-model:openKeys="openKeys"style="height: calc(100% - 40px)"mode="inline"@click="handleSelect"><template v-for="item in siderMenus" :key="item.key"><a-menu-item v-if="!item?.children?.length" :key="item.key" :path="item.path"><template #icon><svg-icon :icon-class="item.icon" /></template>{{ item.label }}</a-menu-item><template v-else><a-sub-menu :key="item.key" :title="item.title"><template #icon><svg-icon :icon-class="item.icon" /></template><a-menu-item v-for="_item in item.children" :key="_item.key" :path="_item.path">{{ _item.label }}</a-menu-item></a-sub-menu></template></template></a-menu>

6. 效果

查看html,在body的后面生成了svg symbol元素,菜单使用的svg记得去色,不然没法继承菜单设置的color

这篇关于在vue3+vite中使用svg-sprite-loader,antdv修改菜单icon的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594444

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线