在我的父母班上,我有以下内容
<div>
<button onClick(OPEN MODAL)>Open Modal<button/>
<ModalReply /> // default to be closed at first
</div>
ModalReply是功能组件
function ModalReply(props) {
const [modalIsOpen, setModalIsOpen] = useState(false)
<div>
<Modal
isOpen={modalIsOpen}
onRequestClose={() => setModalIsOpen(false)}
>
<h1>Test</h1>
</Modal>
</div>
从父类中,我想访问模式状态组件并将useState-> setModalIsOpen设置为true
答案 0 :(得分:1)
在父级中设置modalState并将其作为子级组件的道具传递。
在父母中
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>
答案 1 :(得分:0)
将状态移到父级,使您的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>
);
}
答案 2 :(得分:0)
反应数据流是单向的,父级不能直接修改子级组件的状态。要实现您想要的目标,您需要: