3 回答
TA贡献1796条经验 获得超4个赞
在父组件中设置 modalState 并将它们作为子组件的 props 传递。
在父母中
const [modalIsOpen, setModalIsOpen] = useState(false)
const toggleModal = (val) => setModalIsOpen(val)
...
<ModalReply modalisOpen={modalIsOpen} toggleModal={toggleModal}/>
在儿童时期
function ModalReply(props) {
<div>
<Modal
isOpen={props.modalIsOpen}
onRequestClose={() => props.toggleModal(false)}
>
<h1>Test</h1>
</Modal>
</div>
TA贡献1877条经验 获得超6个赞
将状态移至父级,使您的 ModalReply 无状态。
const ModalReply = ({ isOpen, onClose }) => (
<div>
<Modal isOpen={isOpen} onRequestClose={onClose}>
<h1>Test</h1>
</Modal>
</div>
);
export default function App() {
const [isOpen, setIsOpen] = useState(false);
const toggle = setIsOpen((oldIsOpen) => !oldIsOpen);
return (
<div className="App">
<button onClick={toggle}>Open Modal</button>
<ModalReply isOpen={isOpen} onClose={toggle} />
</div>
);
}
TA贡献1877条经验 获得超1个赞
React数据流是单向的,父组件不能直接修改子组件的状态。为了实现你想要的,你需要:
将状态移动到父组件并将数据作为 props 传递给子组件。
使用 redux 或 mobx 等状态管理器
使用上下文 API
添加回答
举报