@@ -41,21 +41,23 @@ const Drawer: React.FC<DrawerProps> = props => {
41
41
}
42
42
43
43
// ============================= Open =============================
44
- const [ internalOpen , setInternalOpen ] = React . useState ( false ) ;
44
+ const [ mounted , setMounted ] = React . useState ( false ) ;
45
45
46
46
useLayoutEffect ( ( ) => {
47
- setInternalOpen ( open ) ;
48
- } , [ open ] ) ;
47
+ setMounted ( true ) ;
48
+ } , [ ] ) ;
49
+
50
+ const mergedOpen = mounted ? open : false ;
49
51
50
52
// ============================ Focus =============================
51
53
const panelRef = React . useRef < HTMLDivElement > ( ) ;
52
54
53
55
const lastActiveRef = React . useRef < HTMLElement > ( ) ;
54
56
useLayoutEffect ( ( ) => {
55
- if ( internalOpen ) {
57
+ if ( mergedOpen ) {
56
58
lastActiveRef . current = document . activeElement as HTMLElement ;
57
59
}
58
- } , [ internalOpen ] ) ;
60
+ } , [ mergedOpen ] ) ;
59
61
60
62
// ============================= Open =============================
61
63
const internalAfterOpenChange : DrawerProps [ 'afterOpenChange' ] =
@@ -73,13 +75,13 @@ const Drawer: React.FC<DrawerProps> = props => {
73
75
} ;
74
76
75
77
// ============================ Render ============================
76
- if ( ! forceRender && ! animatedVisible && ! internalOpen && destroyOnClose ) {
78
+ if ( ! forceRender && ! animatedVisible && ! mergedOpen && destroyOnClose ) {
77
79
return null ;
78
80
}
79
81
80
82
const drawerPopupProps = {
81
83
...props ,
82
- open : internalOpen ,
84
+ open : mergedOpen ,
83
85
prefixCls,
84
86
placement,
85
87
autoFocus,
@@ -94,10 +96,10 @@ const Drawer: React.FC<DrawerProps> = props => {
94
96
95
97
return (
96
98
< Portal
97
- open = { internalOpen || forceRender || animatedVisible }
99
+ open = { mergedOpen || forceRender || animatedVisible }
98
100
autoDestroy = { false }
99
101
getContainer = { getContainer }
100
- autoLock = { mask && ( internalOpen || animatedVisible ) }
102
+ autoLock = { mask && ( mergedOpen || animatedVisible ) }
101
103
>
102
104
< DrawerPopup { ...drawerPopupProps } />
103
105
</ Portal >
0 commit comments