1
1
import React , { useState } from 'react' ;
2
- import ProLayout from '@ant-design/pro-layout' ;
2
+ import ProLayout , { MenuDataItem } from '@ant-design/pro-layout' ;
3
3
import type { IRouteComponentProps } from 'umi' ;
4
4
import { Link , useModel } from 'umi' ;
5
5
import Iconfont from '@/components/Iconfont' ;
@@ -8,53 +8,35 @@ import Logo from './components/Logo';
8
8
import defaultSettings from './defaultSettings' ;
9
9
import styles from './index.module.less' ;
10
10
11
+ const iconMap = {
12
+ iconyunyingguanli : < Iconfont name = "iconyunyingguanli" style = { { marginRight : 10 } } /> ,
13
+ icongongsi : < Iconfont name = "icongongsi" style = { { marginRight : 10 } } /> ,
14
+ } ;
11
15
export default function BasicLayout ( props : IRouteComponentProps ) {
12
16
const [ collapsed , handleMenuCollapse ] = useState < boolean > ( false ) ;
13
17
const { initialState } = useModel ( '@@initialState' ) ;
14
18
15
19
const { menus = [ ] } = initialState ! ;
16
- const menuDataRender = ( ) => menus ;
20
+
21
+ const loopMenuItem = ( menus : MenuDataItem [ ] ) : MenuDataItem [ ] =>
22
+ menus . map ( ( { icon, children, ...item } ) => ( {
23
+ ...item ,
24
+ icon : icon && iconMap [ icon as string ] ,
25
+ children : children && loopMenuItem ( children ) ,
26
+ } ) ) ;
17
27
18
28
return (
19
29
< ProLayout
20
30
className = { styles [ 'basic-layout' ] }
21
31
logo = { < Logo /> }
22
32
collapsed = { collapsed }
23
33
onCollapse = { handleMenuCollapse }
24
- menuHeaderRender = { ( logoDom , titleDom ) => (
25
- < Link to = "/" >
26
- { logoDom }
27
- { titleDom }
28
- </ Link >
29
- ) }
34
+ menuDataRender = { ( ) => loopMenuItem ( menus ) }
30
35
menuItemRender = { ( menuItemProps , defaultDom ) => {
31
- return (
32
- < Link to = { menuItemProps . path || '/' } >
33
- < span >
34
- { menuItemProps . customIcon && (
35
- < Iconfont
36
- name = { menuItemProps . customIcon }
37
- style = { { marginRight : 10 , fontSize : 17 } }
38
- />
39
- ) }
40
- </ span >
41
- < span > { defaultDom } </ span >
42
- </ Link >
43
- ) ;
44
- } }
45
- subMenuItemRender = { ( menuItemProps : any , defaultDom : any ) => {
46
- return (
47
- < span >
48
- { menuItemProps . customIcon && (
49
- < Iconfont name = { menuItemProps . customIcon } style = { { marginRight : 10 , fontSize : 17 } } />
50
- ) }
51
- < span > { defaultDom } </ span >
52
- </ span >
53
- ) ;
36
+ return < Link to = { menuItemProps . path || '/' } > { defaultDom } </ Link > ;
54
37
} }
55
38
rightContentRender = { ( /** props: HeaderViewProps */ ) => < CustomHeaderRight /> }
56
39
onMenuHeaderClick = { ( ) => props . history . push ( '/' ) }
57
- menuDataRender = { menuDataRender }
58
40
{ ...defaultSettings }
59
41
>
60
42
{ props . children }
0 commit comments