UNPKG

3.12 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 <Menu
67 mode="inline"
68 openKeys={this.state.openKeys}
69 selectedKeys={[this.state.current]}
70 style={{ width: 240 }}
71 onOpenChange={this.onOpenChange}
72 onClick={this.handleClick}>
73 <SubMenu key="sub1" title={<span><span>组织 1</span></span>}>
74 <Menu.Item key="1">选项 1</Menu.Item>
75 <Menu.Item key="2">选项 2</Menu.Item>
76 <Menu.Item key="3">选项 3</Menu.Item>
77 <Menu.Item key="4">选项 4</Menu.Item>
78 </SubMenu>
79 <SubMenu key="sub2" title={<span><span>组织 2</span></span>}>
80 <Menu.Item key="5">选项 5</Menu.Item>
81 <Menu.Item key="6">选项 6</Menu.Item>
82 <SubMenu key="sub3" title="子项">
83 <Menu.Item key="7">选项 7</Menu.Item>
84 <Menu.Item key="8">选项 8</Menu.Item>
85 </SubMenu>
86 </SubMenu>
87 <SubMenu key="sub4" title={<span><span>组织 3</span></span>}>
88 <Menu.Item key="9">选项 9</Menu.Item>
89 <Menu.Item key="10">选项 10</Menu.Item>
90 <Menu.Item key="11">选项 11</Menu.Item>
91 <Menu.Item key="12">选项 12</Menu.Item>
92 </SubMenu>
93 </Menu>
94 )
95 }
96}
97
98export default Demo3;
\No newline at end of file