解决react antd design pro 二级图标不显示问题(v4版本)

1、问题描述

在项目路由配置中,对各个子路由配置icon属性,但是项目实际运行中并不能显示

{
      path: '/system',
      name: 'system',
      icon: 'icon-xitong',
      routes: [
         {
           path: '/system/user',
           name: 'user',
           icon: 'smile',
           component: './system/index',
           // authority: ['admin'],
         }
        ]
}

效果如下图所示
在这里插入图片描述

2 解决思路及编码

2.1 选择iconfont资源

 个人在开发中选择阿里的iconfont,作为路由的icon,[https://www.iconfont.cn/](https://www.iconfont.cn/)

在这里插入图片描述

2.2 创建图标组件

以下配置依据个人开发情况酌情修改
在项目工程目录components下创建 SvgIcon文件夹,并创建index.js 项目文件,文件内容如下
在这里插入图片描述
同时为清晰参考,提供该目录
在这里插入图片描述

2.3 重写 BasicLayout.jsx 中 方法

https://procomponents.ant.design/components/layout#prolayout 文档中提供了

menuItemRender	自定义菜单项的 render 方法	
subMenuItemRender	自定义拥有子菜单菜单项的 render 方法
<ProLayout
	menuItemRender={(menuItemProps, defaultDom) => {
	        return (
	          <Link to={menuItemProps.path ? menuItemProps.path : '#'}>
	            {menuItemProps.icon && < SvgIcon type={menuItemProps.icon.toString()} />}	{menuItemProps.name}
	          </Link>
	        )
	      }}
	      subMenuItemRender={(subMenuITem) => {
	        return (
	          <>
	            <span className="ant-pro-menu-item">
	              <span role="img" className="anticon">
	                {subMenuITem.icon && <SvgIcon type={subMenuITem.icon.toString()} />}
	              </span>
	              <span>
	                {subMenuITem.name}
	              </span>
	            </span>
	          </>
	        )
	      }}
 />

2.4 完成配置,刷新页面即可

以上亲测有效,希望帮助到各位。

pro 坑太深,也希望社区资源原来越丰富。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐