const Navbar = () => {
const [isModalOpen, setisModalOpen] = useState(true)
const [isLogin, setisLogin] = useState(true)
const onClose = () =>{
setisModalOpen(false)
if(!isLogin){
setisLogin(true)
}
}
return (<Modal isOpen={isModalOpen} onClose={() => onClose()} >
{!isLogin ?
<Register />
:
<Login setisLogin={() => setisLogin(false)} />
}
</Modal>)
}
when I call onclose Function component gets re-renders once with the value of login then the modal is closing
Using setTimeout is solving my problem but I think using setTimeout is not a good practice.
const Navbar = () => {
const [isModalOpen, setisModalOpen] = useState(true)
const [isLogin, setisLogin] = useState(true)
const onClose = () =>{
setisModalOpen(false)
setTimeout(() => {
if(!isLogin){
setisLogin(true)
}
}, 300);
}
return (<Modal isOpen={isModalOpen} onClose={() => onClose()} >
{!isLogin ?
<Register />
:
<Login setisLogin={() => setisLogin(false)} />
}
</Modal>)
}