Я использую хук в компоненте для управления модальным состоянием. (Версия класса компонента воспроизводит проблему) handleClick откроет модальное и handleModalClose должно закрыться.
Я отправляю handleModalClose в модальный компонент и с console.log мог видеть, что он обрабатывается, но состояние isModalOpen не изменилось ( то же самое для обратного вызова setState). Когда я пытаюсь вызвать его с помощью setTimeout - состояние меняется, а модальное закрывается.
Почему, черт возьми, состояние не меняется, когда я вызываю изменение из дочернего ???
const [isModalOpen, setModalOpen] = useState(false);
const handleClick = () => {
setModalOpen(true);
// setTimeout(() => handleModalClose, 10000);
};
const handleModalClose = () => {
console.log('!!!!!!!!handleModalClose');
setModalOpen(false);
};
return (
<div onClick={handleClick}>
{isModalOpen && <Modal closeModal={handleModalClose} />}
</div>
);
и вот выдержка из Модал
const Modal = (props) => {
const { closeModal } = props;
return (
<>
<div className="modal">
<form className="" onSubmit={handleSubmit(onSubmit)}>
<button type="button" className="button_grey button_cancel_modal" onClick={closeModal}>
</button>