1
- import React , { ChangeEvent , PureComponent } from 'react' ;
1
+ import React , { ChangeEvent , Component , createRef } from 'react' ;
2
2
import Dropdown from 'react-select' ;
3
3
4
4
import DOM from 'core/browser/DOM' ;
@@ -17,7 +17,12 @@ interface IProps {
17
17
disabled ?: boolean ;
18
18
}
19
19
20
- export default class CellDropdown extends PureComponent < IProps > {
20
+ export default class CellDropdown extends Component < IProps > {
21
+ dropdownRef : React . RefObject < any > ;
22
+ constructor ( props : IProps ) {
23
+ super ( props ) ;
24
+ this . dropdownRef = createRef ( ) ;
25
+ }
21
26
render ( ) {
22
27
const { clearable, dropdown, onChange, value, disabled} = this . props ;
23
28
@@ -37,7 +42,7 @@ export default class CellDropdown extends PureComponent<IProps> {
37
42
}
38
43
</ div >
39
44
< Dropdown
40
- ref = 'dropdown'
45
+ ref = { this . dropdownRef }
41
46
clearable = { clearable }
42
47
onChange = { ( newValue : any ) => {
43
48
onChange ( newValue ? newValue . value : newValue ) ;
@@ -71,7 +76,7 @@ export default class CellDropdown extends PureComponent<IProps> {
71
76
return ;
72
77
}
73
78
74
- const dropdown = this . refs . dropdown as any ;
79
+ const dropdown = this . dropdownRef . current ;
75
80
76
81
if ( applyFocus && dropdown && document . activeElement !== dropdown ) {
77
82
// Limitation. If React >= 16 --> Use React.createRef instead to pass parent ref to child
@@ -83,8 +88,8 @@ export default class CellDropdown extends PureComponent<IProps> {
83
88
}
84
89
85
90
private handleOpenDropdown = ( ) => {
86
- const { dropdown } : { [ key : string ] : any } = this . refs ;
87
-
88
- dropdownHelper ( dropdown . wrapper . querySelector ( '.Select-menu-outer' ) ) ;
91
+ dropdownHelper (
92
+ this . dropdownRef . current . wrapper . querySelector ( '.Select-menu-outer' )
93
+ ) ;
89
94
} ;
90
95
}
0 commit comments