,可以考虑使用 useEffect Hook,在 Modal 组件挂载时监听 props.ModalState 变化并更新 modalIsOpen 状态值。 写一下
时间: 2024-03-20 14:43:53 浏览: 61
可以使用 useEffect Hook 来监听 props.ModalState 变化并更新 modalIsOpen 状态值,确保 Modal 组件的显示和隐藏与父组件的状态同步。具体实现如下:
```
import React, { useState, useEffect } from 'react';
import Modal from 'react-modal';
function CellClickModal(props) {
const [modalIsOpen, setModalIsOpen] = useState(false);
useEffect(() => {
setModalIsOpen(props.ModalState);
}, [props.ModalState]);
function handleClick() {
setModalIsOpen(!modalIsOpen);
}
const customStyles = {
overlay: {
backgroundColor: 'rgba(0, 0, 0, 0.1)',
},
content: {
width: '50%',
height: '50%',
top: '25%',
left: '25%',
padding: '20px',
},
};
return (
<div>
<Modal isOpen={modalIsOpen} style={customStyles}>
<button onClick={handleClick}>111</button>
</Modal>
</div>
);
}
export default CellClickModal;
```
这段代码中,useEffect Hook 监听了 props.ModalState 变化,并在变化时更新了 modalIsOpen 状态值。这样就可以确保 Modal 组件的状态与父组件的状态同步,避免了重复出现或关闭不了等问题。
阅读全文