后端传递的图标是字符串形式的 Ant Design 图标组件怎么避免被解析为普通文本

问题描述

后端传递导航,数据格式带了icon。如下

javascript 复制代码
const superNav = [
            {
              key: '1',
              icon: '<AppstoreOutlined />',
              title: '控制台',
              link: '/console',
            },
            {
              key: '2',
              icon: '<UserOutlined />',
              title: '账号管理',
              children: [
                {
                  key: 'sun1',
                  title: '权限管理',
                  link: '/account/permission',
                },
                {
                  key: 'sun3',
                  title: '用户管理',
                  link: '/account/role',
                },
              ],
            },
        ];

不做处理渲染的话结果如下

解决方案

导入需要的antd组件,在拿到后端数据后把原本的icon字符串替换为antd对应的icon组件

javascript 复制代码
import {
  UserOutlined,
  SecurityScanOutlined,
  IdcardOutlined,
  AppstoreOutlined,
} from '@ant-design/icons';

//省略

  const getNavList = ()=>{
      let navList = navData.filter((item,index)=>{
          if(item.icon=='<AppstoreOutlined />'){
            item.icon = <AppstoreOutlined />
          }else if(item.icon=='<SecurityScanOutlined />'){
            item.icon = <SecurityScanOutlined />
          }else if(item.icon=='<IdcardOutlined />'){
            item.icon = <IdcardOutlined />
          }else if(item.icon=='<UserOutlined />'){
            item.icon = <UserOutlined />
          }
          return item
      })
      setMenuData(navList)
  }
相关推荐
追逐梦想永不停15 小时前
记录一个好用的excel判断数字格式的公式
前端·chrome·excel
hpysirius15 小时前
从零构建 Web 端视频剪辑器:技术实践与思考
前端
让学习成为一种生活方式15 小时前
大肠杆菌合成扑热息痛--对乙酰氨基酚--文献精读227
开发语言·前端·javascript
李白的天不白15 小时前
请求不到百度网址的原因
前端
Gary Studio16 小时前
Selinux编写
linux·服务器·前端
网络点点滴16 小时前
NPM的包版本管理
前端·npm·node.js
光影少年16 小时前
react性能优化比较好的办法有哪些?
前端·react.js·性能优化
fix一个write十个16 小时前
从零搭建音视频通话太痛苦?这个 Vue3 CallKit 让你 5 分钟搞定 1v1 + 群聊通话
前端·vue.js·github
豹哥学前端16 小时前
告别割裂式学习:待办清单项目,一次性掌握数组、本地存储与事件委托
前端·javascript
JYeontu16 小时前
照片墙太死板?做一个会随风摇摆的绳串图片交互效果
前端·javascript·css