在React中使用动态图标

背景

需要按名称引入图标

安装

yarn add react-icons

实现

import loadable from "@loadable/component"
import { IconBaseProps, IconType } from "react-icons/lib"interface typesPropsIcon {nameIcon: string;propsIcon?: IconBaseProps
}export function Icon({ nameIcon, propsIcon }: typesPropsIcon): JSX.Element {const lib = nameIcon.replace(/([a-z0-9])([A-Z])/g, '$1 $2').split(" ")[0].toLocaleLowerCase();const ElementIcon: IconType = loadable(() => import(`react-icons/${lib}/index.js`), {resolveComponent: (el: JSX.Element) => el[nameIcon as keyof JSX.Element]});return (<span style={{paddingRight: 6}}><ElementIcon {...propsIcon} style={{size: '1em'}}/></span>)

示例

<Space direction="horizontal"><Menumode="inline"    style={{ width: 500, height:'fit-content' }}    items={[{ key: 'mail', label: 'Mail1', icon: <MailOutlined />, type:'group' },{ key: 'mail2', label: 'Mail2', icon: <Icon nameIcon="AiFillBug" propsIcon={{ size: 20 }} /> },{ key: 'mail3', label: 'Mail3', icon: <Icon nameIcon="AiFillInsurance" propsIcon={{ size: 20 }}/> },{ key: 'mail4', label: 'Mail4', icon: <Icon nameIcon="AiFillDollarCircle" propsIcon={{ size: 20 }}/> },{ key: 'mail5', label: 'Mail5', icon: <Icon nameIcon="AiOutlineApartment" propsIcon={{ size: 20 }}/> },]}        />      <Menumode="inline" style={{ width: 256, height:'fit-content', marginLeft: 4}}          items={[{ key: 'mail11', label: ' Mail1', icon: <Icon nameIcon="BiAperture" propsIcon={{ size: 20 }}/>, type:'group' },{ key: 'mail21', label: ' Mail2', icon: <Icon nameIcon="CiBasketball" propsIcon={{ size: 20 }}/> },{ key: 'mail31', label: ' Mail3', icon: <Icon nameIcon="CiBadgeDollar" propsIcon={{ size: 20 }}/> },{ key: 'mail41', label: ' Mail4', icon: <Icon nameIcon="CiBoxList" propsIcon={{ size: 20, marginRight: 80, marginBottom: 10 }}/> },{ key: 'mail51', label: ' Mail5', icon: <ClusterOutlined /> },]}        />      </Space>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ShopsN commentUpload 文件上传漏洞复现

0x01 产品简介 ShopsN 是一款符合企业级商用标准全功能的真正允许免费商业用途的开源网店全网系统。 0x02 漏洞概述 ShopsN commentUpload 接口处存在任意文件上传漏洞,攻击者可以利用文件上传漏洞执行恶意代码、写入后门、读取敏感文件,从而可能导致服务器受到攻击并被控…

cat EOF快速创建一个文件,并写入内容

在linux系统中&#xff0c;如果你有这个需求 vi一个文件 /etc/docker/daemon.json 在这个文件中写入内容 { "registry-mirrors": ["https://iw3lcsa3.mirror.aliyuncs.com","http://10.1.8.151:8082"],"insecure-registries":[&quo…

SaaS 电商设计 (五) 私有化部署-实现 binlog 中间件适配

一、 背景 具体的中间件私有化背景在上文 SaaS 电商设计 (二) 私有化部署-缓存中间件适配 已有做相关介绍.这里具体讨论的场景是通过解析mysql binlog 来实现mysql到其他数据源的同步.具体比如:在电商的解决方案业务流中经常有 ES 的使用场景,用以解决一些复杂的查询和搜索商品…

C复习-typedef相关

参考&#xff1a;《C专家编程》 例子 void(*signal(int sig, void(*func)(int)))(int);分析&#xff1a;signal是一个函数&#xff0c;返回一个函数指针&#xff0c;它指向的函数接受int参数返回void。signal的参数是int和一个接受int的函数指针。 可以使用typedef进行简化&a…

Mybatis 拦截器实现 Like 通配符转义

Mybatis 拦截器实现 Like 通配符转义 mysql中like查询通配符问题描述 如果在MySQL中使用如下查询&#xff0c;将检索出全部数据 select * from t_user where name like %%%; select * from t_user where name like %_%; select * from t_user where name like concat(%,%,%)…

java.lang.UnsupportedOperationException异常解决

在执行如下代码时&#xff0c;发现当apps.add("...");代码执行时&#xff0c;会报java.lang.UnsupportedOperationException错误 List<String> apps Arrays.asList("...");apps.add("..."); 问题出现的原因如下&#xff1a; 1、ArrayLi…

K8S学习指南(17)-k8s核心对象CronJob

文章目录 前言什么是CronJob&#xff1f;示例演示步骤1&#xff1a;创建CronJob步骤2&#xff1a;定义任务模板步骤3&#xff1a;部署CronJob步骤4&#xff1a;监视CronJob的执行 总结 前言 Kubernetes&#xff08;简称K8s&#xff09;是一种用于自动部署、扩展和管理容器化应…

STM32 寄存器配置笔记——I2C 读写AT24C02 EEPROM

一、简介 本文主要介绍STM32F10xx系列如何使用软件模拟I2C总线读写AT24C02的EEPROM数据。 二、概述 I2C协议是一种用于同步、半双工、串行总线(由单片机时钟线、单数据交换器数据线组成)上的协议。规定了总线空闲状态、起始条件、停止条件、数据有效性、字节格式、响应确认信号…

MES系统物料计划协同:全面解析与应用

一、MES系统物料计划协同概述 MES系统物料计划协同是指通过MES系统对物料计划进行统一管理和协调&#xff0c;确保生产计划的顺利进行。通过将物料需求、采购、库存、生产和配送等环节进行有效集成&#xff0c;实现供应链的优化。这种协同方式有助于提高供应链的透明度和协同性…

焊盘:十字连接VS全覆盖 铺铜

在铺铜规则中&#xff0c;焊盘连接方式有两种&#xff1a; 十字连接 优点&#xff1a;较好焊接&#xff1a;因铺铜面积减少&#xff0c;温度下降速度降低&#xff0c;较好焊接&#xff0c;不易虚焊。 缺点&#xff1a;载流能力较弱&#xff1a;铺铜面积↓ → 载流能力↓全连接…

Python: list查找元素操作

not in 在Python中&#xff0c;not in 是一个逻辑运算符&#xff0c;用于检查一个元素是否不在一个列表&#xff08;list&#xff09;中。 如果元素不在列表中&#xff0c;not in 返回 True&#xff0c;否则返回 False。 语法&#xff1a; element not in list 其中&#…

Arrays类

一&#xff0c;操作数组的工具类 方法名 说明 public static String toString​(类型[] arr) 返回数组的内容 public static int[] copyOfRange​(类型[] arr, 起始索引, 结束索引) 拷贝数组&#xff08;指定范围&#xff09; public static copyOf​(类型[] arr, int n…

Leetcode—118.杨辉三角【简单】

2023每日刷题&#xff08;六十&#xff09; Leetcode—118.杨辉三角 实现代码 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ans(numRows);for(int i 0; i < numRows; i) {ans[i].resize(i 1);ans…

算法训练营Day14

#Java #二叉树层次遍历 #反转二叉树 开源学习资料 二叉树的层次遍历&#xff1a;力扣题目链接 二叉树的层次遍历很好理解&#xff1a; 就是从根结点一层一层地往下遍历&#xff08;同一层&#xff0c;从左到右&#xff09;&#xff1a; 迭代的方式很好理解&#xff1a;就是…

用实例域代替序数

在Java中&#xff0c;枚举类型的ordinal()方法返回枚举常量的序数&#xff08;即其在枚举声明中的位置&#xff09;。在某些情况下&#xff0c;使用实例域&#xff08;instance field&#xff09;代替序数可能更加安全和易读。以下是一个示例&#xff0c;演示如何使用实例域代替…

mysql CREATE DATABASE

DROP DATABASE IF EXISTS zengwenfeng;CREATE DATABASE zengwenfeng DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;USE zengwenfeng; 脚本天天少这些&#xff0c;天天找这段&#xff01;

computed 和 watch 的奇妙世界:让数据驱动你的 Vue 应用(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

TestSSLServer4.exe工具使用方法简单介绍(查SSL的加密版本SSL3或是TLS1.2)

一、工具使用方法介绍 工具使用方法参照&#xff1a;http://www.bolet.org/TestSSLServer/ 全篇英文看不懂&#xff0c;翻译了下&#xff0c;能用到的简单介绍如下&#xff1a; 将下载的TestSSLServer4.exe工具放到桌面上&#xff0c;CMD命令行进入到桌面目录&#xff0c;执…

解决Requires: socat异常

安装mariaDB10报错&#xff1a; Error: Package: galera-4-26.4.16-1.el7.centos.x86_64 (mariadb)Requires: socat Error: Package: galera-4-26.4.16-1.el7.centos.x86_64 (mariadb)Requires: libboost_program_options-mt.so.1.53.0()(64bit)You could try using --skip-br…

从 0 开始创建 SpringBoot 项目

从 0 开始创建 SpringBoot 项目 从 0 开始创建 SpringBoot 项目环境准备创建项目项目目录结构及说明编写代码参考 从 0 开始创建 SpringBoot 项目 环境准备 操作系统&#xff1a;Windows 10IDE&#xff1a;IntelliJ IDEA 2023.3.1Java 版本&#xff1a;jdk1.8 工具网盘链接&…