MenuTree.jsx
1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* Author: llw
* Date: 2022.9.14
* Description: [菜单层级树]
*/
import React from 'react';
import { connect } from 'umi';
import { Tree } from 'antd';
const { TreeNode } = Tree;
const MenuTree = props => {
const { dispatch, dataSystemMenu, dataLevelMenu, dataExpandedKeys } = props;
// TreeNode的DOM
const renderTreeNode = data => {
return data.map(item => {
if (item.children && item.children.length) {
return (
<TreeNode title={item.title} key={item.resourceCode}>
{renderTreeNode(item.children)}
</TreeNode>
);
}
return <TreeNode title={item.title} key={item.resourceCode} />;
});
};
return (
<Tree
showLine
showIcon
className="info-tree"
expandedKeys={dataExpandedKeys}
onSelect={([key], e) => {
const meunInfo = dataLevelMenu.find(item => item.resourceCode === key);
dispatch({
type: 'SystemMenu/changeState',
payload: {
dataMenuInfo: !key || !meunInfo ? [] : [{ ...meunInfo, children: undefined }],
},
});
}}
>
{renderTreeNode(dataSystemMenu)}
</Tree>
);
};
export default connect(({ SystemMenu }) => ({
...SystemMenu,
}))(MenuTree);