Skip to content

Commit 0a0bd94

Browse files
committed
Fix NavMenu crash issue
1 parent a6418c6 commit 0a0bd94

File tree

5 files changed

+24
-20
lines changed

5 files changed

+24
-20
lines changed

src/menu/Menu.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export default class Menu extends Component {
55
constructor(props) {
66
super(props);
77

8+
this.instanceType = 'Menu';
9+
810
this.state = {
911
activeIndex: props.defaultActive,
1012
openedMenus: props.defaultOpeneds ? props.defaultOpeneds.slice(0) : [],

src/menu/MenuItem.jsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import { PropTypes } from '../../libs';
44
import MixinComponent from './MixinComponent';
55

66
export default class MenuItem extends MixinComponent {
7+
constructor(props) {
8+
super(props);
9+
10+
this.instanceType = 'MenuItem';
11+
}
12+
713
componentDidMount() {
814
this.rootMenu().state.menuItems[this.props.index] = this;
915
}
@@ -21,10 +27,6 @@ export default class MenuItem extends MixinComponent {
2127
return this.props.index === this.rootMenu().state.activeIndex;
2228
}
2329

24-
parent() {
25-
return this.context.component;
26-
}
27-
2830
render() {
2931
return (
3032
<li
@@ -40,10 +42,6 @@ export default class MenuItem extends MixinComponent {
4042
}
4143
}
4244

43-
MenuItem.contextTypes = {
44-
component: PropTypes.any
45-
};
46-
4745
MenuItem.propTypes = {
4846
index: PropTypes.string.isRequired,
4947
route: PropTypes.object,

src/menu/MenuItemGroup.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export default class MenuItemGroup extends Component {
55
constructor(props) {
66
super(props);
77

8+
this.instanceType = 'MenuItemGroup';
9+
810
this.state = {
911
paddingLeft: 20
1012
}
@@ -15,15 +17,15 @@ export default class MenuItemGroup extends Component {
1517
}
1618

1719
initPadding() {
18-
let level = 0, parent = this.parent(), component = parent.constructor.name;
20+
let level = 0, parent = this.parent(), component = parent.instanceType;
1921

2022
while (component !== 'Menu') {
2123
if (component === 'SubMenu') {
2224
level++;
2325
}
2426

2527
parent = parent.parent();
26-
component = parent.constructor.name;
28+
component = parent.instanceType;
2729
}
2830

2931
this.setState({

src/menu/MixinComponent.jsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ import React from 'react';
22
import { Component, PropTypes } from '../../libs';
33

44
export default class MixinComponent extends Component {
5+
parent() {
6+
return this.context.component;
7+
}
8+
59
indexPath() {
610
let path = [this.props.index];
711
let parent = this.parent();
812

9-
while (parent.constructor.name !== 'Menu') {
13+
while (parent.instanceType !== 'Menu') {
1014
if (parent.props.index) {
1115
path.unshift(parent.props.index);
1216
}
@@ -20,14 +24,18 @@ export default class MixinComponent extends Component {
2024
rootMenu() {
2125
let parent = this.parent();
2226

23-
while (parent.constructor.name !== 'Menu') {
27+
while (parent.instanceType !== 'Menu') {
2428
parent = parent.parent();
2529
}
2630

2731
return parent;
2832
}
2933
}
3034

35+
MixinComponent.contextTypes = {
36+
component: PropTypes.any
37+
};
38+
3139
MixinComponent.propTypes = {
3240
index: PropTypes.string.isRequired
3341
};

src/menu/SubMenu.jsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ export default class SubMenu extends MixinComponent {
88
constructor(props) {
99
super(props);
1010

11+
this.instanceType = 'SubMenu';
12+
1113
this.state = {
1214
active: false
1315
};
@@ -67,10 +69,6 @@ export default class SubMenu extends MixinComponent {
6769
return this.rootMenu().state.openedMenus.indexOf(this.props.index) !== -1;
6870
}
6971

70-
parent() {
71-
return this.context.component;
72-
}
73-
7472
render() {
7573
return (
7674
<li className={this.classNames('el-submenu', {
@@ -97,10 +95,6 @@ SubMenu.childContextTypes = {
9795
component: PropTypes.any
9896
};
9997

100-
SubMenu.contextTypes = {
101-
component: PropTypes.any
102-
};
103-
10498
SubMenu.propTypes = {
10599
index: PropTypes.string.isRequired
106100
};

0 commit comments

Comments
 (0)