后端传递的图标是字符串形式的 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)
  }
相关推荐
右子18 小时前
理解响应式设计—理念、实践与常见误解
前端·后端·响应式设计
KaiSonng18 小时前
【前端利器】这款轻量级图片标注库让你的Web应用瞬间提升交互体验
前端
二十雨辰18 小时前
vite性能优化
前端·vue.js
明月与玄武18 小时前
浅谈 富文本编辑器
前端·javascript·vue.js
paodan18 小时前
如何使用ORM 工具,Prisma
前端
布列瑟农的星空19 小时前
重学React——memo能防止Context的额外渲染吗
前端
FuckPatience19 小时前
Vue 与.Net Core WebApi交互时路由初探
前端·javascript·vue.js
小小前端_我自坚强19 小时前
前端踩坑指南 - 避免这些常见陷阱
前端·程序员·代码规范
lichenyang45319 小时前
从零实现JSON与图片文件上传功能
前端
WebGirl19 小时前
动态生成多层表头表格算法
前端·javascript