Ant Design v4+Craco 中如何动态生成 Icon 结点

3,239 阅读1分钟

Ant Design 4+ 出来之后一直没有在项目中使用,也不敢轻易升级项目中的版本,官网看似变化不大,其实几乎所有组件都有改动,甚至有的组件如Form 、Tree 、 Select、 Table 等整个重写了 从v3到v4的更新变化,详细

新项目尝试了下Antd4 感觉比以前更简单明了,由于很多组件存在细微变化, 使用起来还是看文档为主,基本都正常解决,直到遇到一个问题~~~~

侧边菜单的Icon动态生成问题 在这里插入图片描述 当然直接使用antd 的Menu组件写死也是可以的,但菜单多的话,就不好管理了,那我们就创建个菜单数组,遍历一波 在这里插入图片描述 然后问题就来了,v3里面我们Menu 组件是这样的 在这里插入图片描述

<Icon/> 都是统一的,想动态改变只需要改变type的值就行了
//如:<Icon type="pie" />  <Icon type="shop" />  <Icon type="time" />

v4里再看下Menu组件变成这样了 在这里插入图片描述 icon变成了Menu的一个属性,参数是节点,一下子懵了不知道怎么动态生成了 当时生了好多骚操作,无奈实现不了。。。 仔细翻了文档找到了最原始的方法*** React.createElement() *** 在这里插入图片描述 *** 当时就抽了自己一巴掌,天天hook hook,却把react最初的方法给忘了 ***

简单介绍下 React.createElement( 节点名称 ,节点属性集合,内容集合 )

<h1 className="one">React.createElement</h1>
React.createElement("h1", {className: "one"}, "React.createElement")

那么应用到这里,直接 React.createElement(icon_name)是不是就可以了

在这里插入图片描述

就是这么简单粗暴,结果也是我们想要的

在这里插入图片描述 学习本就是是学和忘的过程,一味的追求新技术,把根本的东西都忘了,不该啊,记录一下警醒自己。