|
1 | 1 | import * as React from 'react'; |
2 | | -import * as ReactDOM from 'react-dom'; |
3 | 2 | import ResizeObserver from 'resize-observer-polyfill'; |
4 | 3 | import SubMenu from './SubMenu'; |
5 | 4 | import { getWidth, setStyle, menuAllProps } from './util'; |
@@ -52,10 +51,12 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> { |
52 | 51 | lastVisibleIndex: undefined, |
53 | 52 | }; |
54 | 53 |
|
| 54 | + childRef = React.createRef<HTMLElement>(); |
| 55 | + |
55 | 56 | componentDidMount() { |
56 | 57 | this.setChildrenWidthAndResize(); |
57 | 58 | if (this.props.level === 1 && this.props.mode === 'horizontal') { |
58 | | - const menuUl = ReactDOM.findDOMNode(this) as HTMLElement; |
| 59 | + const menuUl = this.childRef.current; |
59 | 60 | if (!menuUl) { |
60 | 61 | return; |
61 | 62 | } |
@@ -109,7 +110,7 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> { |
109 | 110 | // get all valid menuItem nodes |
110 | 111 | getMenuItemNodes = (): HTMLElement[] => { |
111 | 112 | const { prefixCls } = this.props; |
112 | | - const ul = ReactDOM.findDOMNode(this) as HTMLElement; |
| 113 | + const ul = this.childRef.current; |
113 | 114 | if (!ul) { |
114 | 115 | return []; |
115 | 116 | } |
@@ -192,7 +193,7 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> { |
192 | 193 | if (this.props.mode !== 'horizontal') { |
193 | 194 | return; |
194 | 195 | } |
195 | | - const ul = ReactDOM.findDOMNode(this) as HTMLElement; |
| 196 | + const ul = this.childRef.current; |
196 | 197 |
|
197 | 198 | if (!ul) { |
198 | 199 | return; |
@@ -247,7 +248,7 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> { |
247 | 248 | return; |
248 | 249 | } |
249 | 250 |
|
250 | | - const ul = ReactDOM.findDOMNode(this) as HTMLElement; |
| 251 | + const ul = this.childRef.current; |
251 | 252 | if (!ul) { |
252 | 253 | return; |
253 | 254 | } |
@@ -360,7 +361,11 @@ class DOMWrap extends React.Component<DOMWrapProps, DOMWrapState> { |
360 | 361 |
|
361 | 362 | const Tag = tag as any; |
362 | 363 |
|
363 | | - return <Tag {...rest}>{this.renderChildren(children)}</Tag>; |
| 364 | + return ( |
| 365 | + <Tag ref={this.childRef} {...rest}> |
| 366 | + {this.renderChildren(children)} |
| 367 | + </Tag> |
| 368 | + ); |
364 | 369 | } |
365 | 370 | } |
366 | 371 |
|
|
0 commit comments