我想从我的React应用程序中的不同组件中打开一个模态,比如“用户登录模态”。例如:我希望模态从A. js
,B. js
和C. js
打开。所以我做了一个新的组件ModalWindow.js
,其中包含modal,我将其导入到A. js
,B. js
和C. js
中。
现在的问题是,我必须在所有3个组件中维护状态showmodel:false
,以便显示/隐藏模态。无论如何,我必须保持一个单一的状态。
一种方法是在父组件中维护状态。但是有没有更好的办法?
X.js
import A from 'A.js'
import B from 'B.js'
import C from 'C.js'
class X extends Component {
return(
render{
<div>
<A />
<B />
<C />
</div>
}
)
}
export default X
A.js
import ModalWindow from 'ModalWindow.js'
class A extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false
};
}
return(
render{
<ModalWindow show={this.state.showModal} container={this}/>
}
)
}
export default A
B. js
import ModalWindow from 'ModalWindow.js'
class B extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false
};
}
return(
render{
<ModalWindow show={this.state.showModal} container={this}/>
}
)
}
export default B
C. js
import ModalWindow from 'ModalWindow.js'
class C extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false
};
}
return(
render{
<ModalWindow show={this.state.showModal} container={this}/>
}
)
}
export default C
ModalWindow.js
import Modal from 'Bootstrap/Modal'
class ModalWindow extends Component {
return(
render{
<Modal
show={this.props.showModal}
container={this.props.container}
bsSize='small'
>
<Modal.Header closeButton="true">
<Modal.Title id="contained-modal-title">
Login
</Modal.Title>
</Modal.Header>
<Modal.Body>
Login Here
</Modal.Body>
</Modal>
}
)
}
export default ModalWindow
您可以在模式内设置状态
,并将两个函数公开给打开/关闭模式,这将改变状态。可以通过其他组件中的refs
访问这些功能。请参见下面的示例。
ModalWindow.js
import Modal from 'Bootstrap/Modal'
class ModalWindow extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false,
}
}
show() {
this.setState({
showModal: true,
})
}
hide() {
this.setState({
showModal: true,
})
}
render() {
return <Modal
show={this.state.showModal}
container={this.props.container}
bsSize='small'>
< Modal.Header closeButton = "true" >
< Modal.Title id = "contained-modal-title" >
Login < /Modal.Title> < /Modal.Header> < Modal.Body >
Login Here < /Modal.Body> < /Modal>
}
}
export default ModalWindow
A. js, B. js, C. js
import ModalWindow from 'ModalWindow.js'
class A extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.refs.modal.show() //to show the modal
this.refs.modal.hide() //to hide the modal
}
render() {
return <ModalWindow container={this} ref = "modal" / >
}
}
export default A
我强烈推荐Dan Abramov在如何在Redux中显示执行异步操作的模式对话框中描述的方法。基本上,有一个中心组件负责显示模态,并分派动作,这些动作给出要打开的模态的名称和作为道具传递的任何值。
现在,首次呈现发生在页面加载时。它只是在javascript文件中调用,如下所示: 这个很好用。 我现在需要的是重写相同的组件,但是使用不同的数据(实际上只是使用不同的数据顺序)。 我在codepen上发布了我的原始代码,以便于调查:https://codepen.io/andriusl/pen/yxwxzg
我试图打开两个实例ChromeDriver具有相同的配置文件如下: 问题是第一个驱动程序工作并导航到Google,但在第二个驱动程序中,我在实例化第二个驱动程序时遇到以下异常: 附加信息:抛出了一个带有空响应的异常,该异常向远程WebDriver服务器发送HTTP请求以获取URLhttp://localhost:6949/session.异常的状态为ReceiveFailure,消息为:基础连接已
我有类别片段和子类片段用于输入要查看的类别子类。我在导航图xml中有操作来打开子类片段。如果我打开任何根类别并单击其任何子类别,那么如果单击的子曲库有子曲库,那么当用户单击它的子曲库时,我应该打开子类片段。有像树一样的方案: 根类别片段: 子类别片段: 下一个子类别片段: 当我单击最后一个子类别片段,其中与前一个父片段相同的片段(相同的操作)时,我得到以下错误: 此处导航xml: 有人知道如何在N
问题内容: 我有以下代码来获取地图: 如何打印带有重复键的消息“重复键”? 问题答案: 如何打印带有重复键的消息“重复键”? 使用当前代码,您将收到消息“重复键”,其中包含至少2个实例的列表,这些实例具有与对象相同的值,例如。 如何获得对应的密钥? 到目前为止,还无法获得相应的键,当前从合并功能中获得的实际上是与相同键映射的2个值,这些值需要合并以仅保留对应键的一个值。 您的问题是 Java 9
我发现有多个环境(例如test和prod),但我希望启动的Docker容器在这两个环境中是相同的。唯一的区别是应用程序配置,我希望使用来指定它。因为我有多个容器和它们之间的依赖关系,所以我想使用docker-compose。但是afaik I只能在文件中指定(请参见文档)。如果是这种情况,那么我需要将原来的克隆到两个不同的文件(一个用于test,一个用于prod),以指向不同的env文件。这意味着
我正在将某些程序集打包到 msi 包中。在执行此操作时,我要求将一些程序集放入本地文件系统以及目标计算机的 GAC 中。众所周知,在这种情况下,重复文件表将无济于事。我决定将程序集放在具有不同标识符的 CAB 文件中两次。现在,为了填充组件表,我有不同的组件标识符,但我没有用于类似程序集的不同组件 GUID。我的问题是,如果我为具有不同组件标识符(在组件表中)的条目保持GUID(因为基本上程序集是