[英]How to get button ID from another component?
我尝试使用 Reactstrap 的弹出框。
这是我的代码片段:
constructor(props) {
super(props);
this.state = {
popoverOpen: false
};
}
toggle = () => {
this.setState({popoverOpen: !this.state.popoverOpen})
};
<div>
<Button id="Popover1" type="button">
Launch Popover
</Button>
<Popover placement="bottom" isOpen={this.state.popoverOpen} target="Popover1" toggle={this.toggle}>
<PopoverHeader>Popover Title</PopoverHeader>
<PopoverBody>Hello there :)</PopoverBody>
</Popover>
</div>
上面的代码已经可以工作了。
但是,现在我想将另一个组件上的按钮分开。
那么,任何示例如何做到这一点..?
是否可以从另一个组件中获取按钮 ID..? 或者,我应该从另一个组件设置状态..? 如果是这样,请举一个例子或来源来学习。
我认为这个任务可以通过React 状态提升来解决。
这个想法是根据需要创建 Button 组件并将其传递给它的toggle
功能,因此 Button 组件将在每次调用时调用它。 您也可以传递this.state.popoverOpen
以便 Button 组件知道当前是否打开了this.state.popoverOpen
。 您的 min 组件将具有相同的状态,但您的 Button 组件将具有父组件的状态作为道具。
这是示例(此代码未经测试!仅用作提示!)
// ButtonComponent.js
// import React and other nesessary things
export default class ButtonComponent extends React.Component {
constructor(props) {
super(props);
}
render () {
return <Button id={this.porps.ButtonID} type="button" onClick={this.props.toggle}>
Launch Popover
</Button>
}
}
// mainComponent.js
import ButtonComponent from './ButtonComponent.js'
export default MainComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
popoverOpen: false
};
}
toggle = () => {
this.setState({popoverOpen: !this.state.popoverOpen})
};
render () {
return <div>
<ButtonComponent toggle={this.toggle.bind(this)} ButtonID={"Popover1"}/>
<Popover placement="bottom" isOpen={this.state.popoverOpen} target="Popover1" toggle={this.toggle}>
<PopoverHeader>Popover Title</PopoverHeader>
<PopoverBody>Hello there :)</PopoverBody>
</Popover>
</div>
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.