3 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
在父組件中設(shè)置 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貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個贊
將狀態(tài)移至父級,使您的 ModalReply 無狀態(tài)。
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貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個贊
React數(shù)據(jù)流是單向的,父組件不能直接修改子組件的狀態(tài)。為了實(shí)現(xiàn)你想要的,你需要:
將狀態(tài)移動到父組件并將數(shù)據(jù)作為 props 傳遞給子組件。
使用 redux 或 mobx 等狀態(tài)管理器
使用上下文 API
添加回答
舉報(bào)