UNPKG

2.4 kBJavaScriptView Raw
1import React, { Component } from "react";
2import PropTypes from 'prop-types';
3
4// const propTypes = {
5// rowsInView: PropTypes.number.isRequired,
6// }
7// const defaultProps = {
8// data: undefined,
9// height: 40,//默认行高
10// rowsInView:25
11// }
12
13export default function keyDownMenu(Menus) {
14 return class KeyDownMenu extends Component {
15 constructor(props) {
16 super(props);
17
18 this.dataMap = {};
19 this.getChildToMap(this.props.children);
20 this.state = {
21 openKeys:this.getOpenKeys()
22 };
23 }
24
25 getOpenKeys=(key='')=>{
26 let defaultKeys = this.props.defaultOpenKeys?[...this.props.defaultOpenKeys]:[];
27 let keys = this.props.openKeys?[...this.props.openKeys,...defaultKeys]:[...defaultKeys];
28 if(key != ''){
29 keys.push(keys)
30 }
31 return keys;
32 }
33
34 getChildToMap(childrens){
35 childrens.forEach(element => {
36 this.dataMap[element.key] = element;
37 let itemChildren = element.props.children;
38 if(itemChildren && Array.isArray(itemChildren) && itemChildren.length > 0){
39 return this.getChildToMap(itemChildren);
40 }
41 });
42 return this.dataMap;
43 }
44
45
46 onKeyDown = (e,item) =>{
47 let {_key} = item;
48 const keyCode = e.keyCode;
49 this.setState({
50 openKeys:this.getOpenKeys()
51 })
52 // openKeys={['demo3sub1','demo3sub4']}
53
54 console.log("----gaojie---onKeyDown -- lib ---- ");
55 console.log(e.target);
56 console.log(item);
57 }
58
59 onSelect = ({item,key,selectedKeys}) => {
60 console.log(`${key} selected`); //获取key
61 // let currentObject = {};
62 // currentObject.value = item.props.children; //获取选中对象的数据
63 // currentObject.key = item.props.eventKey;
64 // console.log(currentObject);
65 this.setState({
66 openKeys:this.getOpenKeys(key)
67 })
68 }
69
70 render(){
71 let {openKeys} = this.props;
72 let _openKeys = openKeys?openKeys:[];
73 console.log("----openKeys---- ",openKeys);
74 return <Menus {...this.props} onKeyDown={this.onKeyDown}
75 openKeys={['demo3sub1','demo3sub4']}
76 onClick={this.onSelect}
77 // openKeys={_openKeys}
78 />
79 }
80 };
81 // KeyDownMenu.defaultProps = defaultProps;
82 // KeyDownMenu.propTypes = propTypes;
83}
84
\No newline at end of file