antd-pro(V5)动态菜单之动态icon

之前做动态菜单的时候没有注意到Icon的问题,以为简单的加个参数即可,后面发现生成的是文本。
在网上找了些资料,或者要引入全部的icons,或者写乱七八糟的方法,但是结合实际项目,这两种都不是我想要的。
实际上项目开发中的菜单icon应该是设计师给的矢量图,上传到iconfont上生成字体图标,然后在项目里使用。antd-pro里使用iconfont不难,主要步骤如下:
1.在iconfont上挑选或者上传图标,下载到项目中
2.在global.less引入字体图标
3.app.tsx页面menuDataRender方法新增自定义组件

const menuDataRender = () => {
 ...
  const data = JSON.parse(str);
  data.forEach((item: MenuDataItem) => {
    const obj = item;
    obj.icon = <MyIcon path={typeof item.path === 'string' ? item.path : ''} />;
    spliceBtn(item);
  });
  return data;
};


const MyIcon = (item: MenuDataItem) => {
  return (
    <span className="anticon font0">
      <span className={`iconfont  icon-${item.path}`}></span>
    </span>
  );
};

.anticon.font0 {
  font-size: 0;
  .iconfont {
    line-height: 19px;
  }
}

结果如下图
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值