UNPKG

3.32 kBJavaScriptView Raw
1/**
2 * @title 键盘操作示例二:竖向手风琴Menu
3 * @description 菜单展开是手风琴形式。
4 */
5
6
7import React, { Component } from 'react';
8import Menu from '../../src';
9
10const SubMenu = Menu.SubMenu;
11
12
13class 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 //IE下 array.find()方法不可用
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
102export default Demo3;
\No newline at end of file