@@ -13,8 +13,11 @@ export interface ModalOptions {
1313 preventScroll ?: boolean ;
1414} ;
1515
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 } > ,
1821 open : ( ) => void ,
1922 close : ( ) => void ,
2023 isOpen : boolean
@@ -29,7 +32,7 @@ const wrapperStyle: React.CSSProperties = {
2932 display : 'flex' ,
3033 justifyContent : 'center' ,
3134 alignItems : 'center' ,
32- zIndex : 1000
35+ zIndex : 1000 ,
3336} ;
3437
3538const maskStyle : React . CSSProperties = {
@@ -39,12 +42,12 @@ const maskStyle: React.CSSProperties = {
3942 bottom : 0 ,
4043 right : 0 ,
4144 backgroundColor : 'rgba(0, 0, 0, 0.5)' ,
42- zIndex : 100000
45+ zIndex : 100000 ,
4346} ;
4447
4548const containerStyle : React . CSSProperties = {
4649 position : 'relative' ,
47- zIndex : 100001
50+ zIndex : 100001 ,
4851} ;
4952
5053const Modal : React . FC < ModalProps > = ( { children, isOpen = false , close, elementId = 'root' } ) => {
@@ -76,13 +79,16 @@ export const useModal: UseModal = (elementId = 'root', options = {}) => {
7679 }
7780 } , [ setOpen , preventScroll ] ) ;
7881
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+ ) ;
8692
8793 return [ ModalWrapper , open , close , isOpen ] ;
8894} ;
0 commit comments