@@ -13,8 +13,11 @@ export interface ModalOptions {
13
13
preventScroll ?: boolean ;
14
14
} ;
15
15
16
- export type UseModal = ( elementId : string , options ?: ModalOptions ) => [
17
- ModalWrapper : React . FC < { children : React . ReactNode } > ,
16
+ export type UseModal = (
17
+ elementId : string ,
18
+ options ?: ModalOptions
19
+ ) => [
20
+ ModalWrapper : React . FC < { children : React . ReactNode } > ,
18
21
open : ( ) => void ,
19
22
close : ( ) => void ,
20
23
isOpen : boolean
@@ -29,7 +32,7 @@ const wrapperStyle: React.CSSProperties = {
29
32
display : 'flex' ,
30
33
justifyContent : 'center' ,
31
34
alignItems : 'center' ,
32
- zIndex : 1000
35
+ zIndex : 1000 ,
33
36
} ;
34
37
35
38
const maskStyle : React . CSSProperties = {
@@ -39,12 +42,12 @@ const maskStyle: React.CSSProperties = {
39
42
bottom : 0 ,
40
43
right : 0 ,
41
44
backgroundColor : 'rgba(0, 0, 0, 0.5)' ,
42
- zIndex : 100000
45
+ zIndex : 100000 ,
43
46
} ;
44
47
45
48
const containerStyle : React . CSSProperties = {
46
49
position : 'relative' ,
47
- zIndex : 100001
50
+ zIndex : 100001 ,
48
51
} ;
49
52
50
53
const Modal : React . FC < ModalProps > = ( { children, isOpen = false , close, elementId = 'root' } ) => {
@@ -76,13 +79,16 @@ export const useModal: UseModal = (elementId = 'root', options = {}) => {
76
79
}
77
80
} , [ setOpen , preventScroll ] ) ;
78
81
79
- const ModalWrapper = React . memo ( ( { children } ) => {
80
- return (
81
- < Modal isOpen = { isOpen } close = { close } elementId = { elementId } >
82
- { children }
83
- </ Modal >
84
- )
85
- } ) ;
82
+ const ModalWrapper = useCallback (
83
+ ( { children } ) => {
84
+ return (
85
+ < Modal isOpen = { isOpen } close = { close } elementId = { elementId } >
86
+ { children }
87
+ </ Modal >
88
+ ) ;
89
+ } ,
90
+ [ isOpen , close , elementId ]
91
+ ) ;
86
92
87
93
return [ ModalWrapper , open , close , isOpen ] ;
88
94
} ;
0 commit comments