1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | import React, { Component } from 'react';
|
8 | import Menu from '../../src';
|
9 |
|
10 | const SubMenu = Menu.SubMenu;
|
11 |
|
12 |
|
13 | class Demo3 extends Component {
|
14 | constructor(props, context) {
|
15 | super(props, context);
|
16 | this.state = {
|
17 | current: '1',
|
18 | openKeys: []
|
19 | }
|
20 | }
|
21 | handleClick = (e) => {
|
22 | console.log('Clicked: ', e);
|
23 | this.setState({current: e.key});
|
24 | }
|
25 | onOpenChange = (openKeys) => {
|
26 | const state = this.state;
|
27 |
|
28 | const latestOpenKey = this.myfilter(openKeys,state.openKeys);
|
29 | const latestCloseKey = this.myfilter(state.openKeys,openKeys);
|
30 |
|
31 | let nextOpenKeys = [];
|
32 | if (latestOpenKey) {
|
33 | nextOpenKeys = this.getAncestorKeys(latestOpenKey).concat(latestOpenKey);
|
34 | }
|
35 | if (latestCloseKey) {
|
36 | nextOpenKeys = this.getAncestorKeys(latestCloseKey);
|
37 | }
|
38 | this.setState({openKeys: nextOpenKeys});
|
39 | }
|
40 |
|
41 |
|
42 | myfilter = (arr1,arr2) => {
|
43 | if(arr2.length === 0 || !arr2) {
|
44 | return arr1[0];
|
45 | }
|
46 |
|
47 | for(var i=0;i<arr1.length;i++)
|
48 | {
|
49 | if(arr2.indexOf(arr1[i].toString()) === -1)
|
50 | {
|
51 | return arr1[i];
|
52 | }
|
53 | }
|
54 | return false;
|
55 | }
|
56 |
|
57 | getAncestorKeys = (key) => {
|
58 | const map = {
|
59 | sub3: ['sub2'],
|
60 | };
|
61 | return map[key] || [];
|
62 | }
|
63 |
|
64 | render() {
|
65 | return (
|
66 | <div>
|
67 | <input style={{'marginBottom':'10px'}} placeholder="我是为了获得焦点"/>
|
68 | <Menu
|
69 | mode="inline" keyboard={true}
|
70 | openKeys={this.state.openKeys}
|
71 | selectedKeys={[this.state.current]}
|
72 | style={{ width: 240 }}
|
73 | onOpenChange={this.onOpenChange}
|
74 | onClick={this.handleClick}>
|
75 | <SubMenu key="sub1" title={<span><span>组织 1</span></span>}>
|
76 | <Menu.Item key="1">选项 1</Menu.Item>
|
77 | <Menu.Item key="2">选项 2</Menu.Item>
|
78 | <Menu.Item key="3">选项 3</Menu.Item>
|
79 | <Menu.Item key="4">选项 4</Menu.Item>
|
80 | </SubMenu>
|
81 | <SubMenu key="sub2" title={<span><span>组织 2</span></span>}>
|
82 | <Menu.Item key="5">选项 5</Menu.Item>
|
83 | <Menu.Item key="6">选项 6</Menu.Item>
|
84 | <SubMenu key="sub3" title="子项">
|
85 | <Menu.Item key="7">选项 7</Menu.Item>
|
86 | <Menu.Item key="8">选项 8</Menu.Item>
|
87 | </SubMenu>
|
88 | </SubMenu>
|
89 | <SubMenu key="sub4" title={<span><span>组织 3</span></span>}>
|
90 | <Menu.Item key="9">选项 9</Menu.Item>
|
91 | <Menu.Item key="10">选项 10</Menu.Item>
|
92 | <Menu.Item key="11">选项 11</Menu.Item>
|
93 | <Menu.Item key="12">选项 12</Menu.Item>
|
94 | </SubMenu>
|
95 | </Menu>
|
96 | </div>
|
97 |
|
98 | )
|
99 | }
|
100 | }
|
101 |
|
102 | export default Demo3; |
\ | No newline at end of file |