1- import React , { useState , useEffect } from 'react' ;
1+ import React , { useState , useEffect , useRef } from 'react' ;
22import ReactModal from 'react-modal' ;
33import './parent-modal.css' ;
44
@@ -9,31 +9,34 @@ const Modal = ({
99} ) => {
1010 const [ curClass , setCurClass ] = useState ( '' ) ;
1111 const [ isOpen , setIsOpen ] = useState ( ModelOpen ) ;
12- const [ stid , setStid ] = useState ( null ) ;
12+ const stid = useRef ( null ) ;
1313 useEffect ( ( ) => {
1414 if ( ModelOpen === true ) {
1515 setIsOpen ( true ) ;
1616 setCurClass ( 'closing' ) ;
17- clearTimeout ( stid ) ;
18- setStid ( setTimeout ( ( ) => {
17+ clearTimeout ( stid . current ) ;
18+ document . body . style . overflow = 'hidden' ;
19+ stid . current = setTimeout ( ( ) => {
1920 setIsOpen ( true ) ;
2021 setCurClass ( '' ) ;
21- } , 20 ) ) ;
22+ } , 20 ) ;
2223 } else {
2324 setCurClass ( 'closing' ) ;
24- clearTimeout ( stid ) ;
25- setStid ( setTimeout ( ( ) => {
25+ clearTimeout ( stid . current ) ;
26+ document . body . style . overflow = '' ;
27+ stid . current = setTimeout ( ( ) => {
2628 setIsOpen ( false ) ;
27- } , 400 ) ) ;
29+ } , 400 ) ;
2830 }
31+ return ( ) => clearTimeout ( stid . current ) ;
2932 } , [ ModelOpen ] ) ;
3033
3134 if ( ! isOpen ) return '' ;
3235 return (
3336 < ReactModal
3437 isOpen = { isOpen }
3538 contentLabel = "onRequestClose Example"
36- // onRequestClose={closeModal} // prevent modal from closing when clicked outside
39+ onRequestClose = { closeModal }
3740 className = "Modal"
3841 overlayClassName = { `Overlay ${ curClass } ` }
3942 >
0 commit comments