1
- import * as React from 'react' ;
1
+ import React , { useRef , useLayoutEffect , useEffect , useCallback } from 'react' ;
2
2
import { useState } from 'react' ;
3
3
import Logger from 'mo/common/logger' ;
4
4
import { Toolbar } from 'mo/components/toolbar' ;
@@ -57,8 +57,8 @@ export const MAX_GROW_HEIGHT = 220;
57
57
58
58
export function Collapse ( props : ICollapseProps ) {
59
59
const [ activePanelKeys , setActivePanelKeys ] = useState < React . Key [ ] > ( [ ] ) ;
60
- const wrapper = React . useRef < HTMLDivElement > ( null ) ;
61
- const requestAF = React . useRef < number > ( ) ;
60
+ const wrapper = useRef < HTMLDivElement > ( null ) ;
61
+ const requestAF = useRef < number > ( ) ;
62
62
63
63
const {
64
64
className,
@@ -80,19 +80,19 @@ export function Collapse(props: ICollapseProps) {
80
80
81
81
// to save position temporarily, empty array when rerender
82
82
const _cachePosition : number [ ] [ ] = [ ] ;
83
- let _cacheWrapperHeight = React . useRef ( 0 ) ;
83
+ const _cacheWrapperHeight = useRef ( 0 ) ;
84
84
85
- const handleResize = React . useCallback ( ( ) => {
85
+ const handleResize = useCallback ( ( ) => {
86
86
// just want to trigger rerender
87
87
setActivePanelKeys ( ( keys ) => keys . concat ( ) ) ;
88
88
} , [ ] ) ;
89
89
90
- React . useEffect ( ( ) => {
90
+ useEffect ( ( ) => {
91
91
window . addEventListener ( 'resize' , handleResize ) ;
92
92
return ( ) => window . removeEventListener ( 'resize' , handleResize ) ;
93
93
} , [ ] ) ;
94
94
95
- React . useLayoutEffect ( ( ) => {
95
+ useLayoutEffect ( ( ) => {
96
96
// It's necessary to check panel's empty before calculate every panel
97
97
filterData . forEach ( ( panel ) => {
98
98
const isActive = activePanelKeys . includes ( panel . id ) ;
0 commit comments