React 16.3, Antd 4.2, 侧边栏的 Icon 由后端返回,Icon显示问题

Posted gqx-html

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React 16.3, Antd 4.2, 侧边栏的 Icon 由后端返回,Icon显示问题相关的知识,希望对你有一定的参考价值。

import React, { Component } from ‘react‘;
import { withRouter, RouteComponentProps } from ‘react-router-dom‘;
import { Layout, Menu } from ‘antd‘;
// 模拟后端返回路由 import Route, { IFMenu } from ‘../../router/config‘; import { Link } from ‘react-router-dom‘; import * as Icon from ‘@ant-design/icons‘; const { SubMenu } = Menu; const { Sider } = Layout; type SiderCustomProps = RouteComponentProps<any> & { collapsed?: boolean } type SiderCustomState = { Logo: string, Icons: any } class SiderCustom extends Component<SiderCustomProps, SiderCustomState> { constructor(props: any) { super(props) this.state = { Icons: Icon } } /* 需要注意的点 ·1.Icons,因需要后端配置图标,但and-design4.0以上版本将icon做成了引用加载,可将Icon传入state进行赋值 */ renderMenuItem = (item: IFMenu) => { let icons: any = this.state.Icons[item.icon]; return ( <Menu.Item key={item.path}> <Link to={item.path + (item.query || ‘‘)}> {React.createElement(icons, { className: ‘icon‘, })} <span className="nav-text">{item.title}</span> </Link> </Menu.Item> ) } /* 父级 */ renderSubMenu = (item: IFMenu) => ( <SubMenu key={item.path} title={item.title}> { item.child!.map((val) => ( val.child ? this.renderSubMenu(val) : this.renderMenuItem(val) )) } </SubMenu> ) render() { return ( <Sider trigger={null} collapsible collapsed={this.props.collapsed} width="256"> <div className="menu-logo"> <Link to="/JFCC" className="a-logo"> <img src={this.state.Logo} alt="Logo" className="Logo"></img> </Link> </div> <Menu theme="dark" mode="inline" > {Route.menus.map((val: IFMenu) => { return val.child ? this.renderSubMenu(val) : this.renderMenuItem(val) })} </Menu> </Sider> ); } } export default withRouter(SiderCustom);

  

以上是关于React 16.3, Antd 4.2, 侧边栏的 Icon 由后端返回,Icon显示问题的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中动态更新导航栏和侧边栏的最佳方法是啥?

由于侧边栏和导航栏,React 中的未找到页面无法正常工作

使用React与antd新建自定导航栏

使用 react-router-dom 停止页面中侧边栏的重新渲染

react中antd刷新页面及后退时菜单栏高亮问题

使用 React 路由器更轻松地通过侧边栏导航动态呈现组件