【发布时间】:2021-03-13 20:55:25
【问题描述】:
我正在尝试创建一个可以从多个组件重用/调用的模式。我希望模态显示在 app.js 中,但按钮调用在另一个组件上。
一旦我能够实现一个,我可以在其他组件上按按钮并调用相同的模态,而不必为每个组件创建相同的模态
<div className="App">
<HeroSlider />
<HowItWorks />
<Modal />
<Footer />
</div>
模态按钮在这个组件上(HeroSlider)。单击后,它将调用模态组件并将其显示在 app.js 中
import React, { useState } from "react";
import Header from './Header'
function HeroSlider(props) {
const [show, setShow] = useState(false);
const modalShow = () => setShow(true);
const openIsAccount = () => {
}
return (
<div className="jumbotron" id="jumbotron2" >
<button type="button" className="btn btn-primary" id="shoutBtn" onClick={modalShow}><span>Get Started</span>
</button>
</div>
);
}
export default HeroSlider;
这里是 Modal.js
const IsAccountOpen = (props) => {
const [show, setShow] = useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
return (
<>
<Modal show={props.show} onHide={handleClose} backdrop="static" keyboard={false}>
<Modal.Header closeButton>
<Modal.Title>Modal title</Modal.Title>
</Modal.Header>
<Modal.Body>
I will not close
</Modal.Body>
</Modal>
</>
);
};
export default IsAccountOpen
【问题讨论】:
-
我同意@Jkartunen。您可能希望将模式的状态提取到应用程序级别,并可能使用 context 或 redux 作为全局状态容器。或者,如果您想避免使用大量回调来更改模式的状态,至少要这样做。
-
谢谢大家,我听从了大家的建议,将模态设置为应用级别。我仍在研究它,看看它在将要调用它的其他组件上的表现如何
标签: javascript reactjs react-hooks modal-dialog