如何从 React class 外部更改模态状态?
How to change Modal state from outside the React class?
我正在尝试通过从反应外部更改状态来调用我的模式 class。但到目前为止还没有运气。我尝试了以下方法:
我有一个名为 Portfolio 的方法,它需要在用户单击图像后激活模式
const Portfolio = (props) =>
<div className="col-sm-4">
<div className="mb-2">
<img
onClick={this.toggle}
className="card-img-top"
src={"/assets/imgs/project/"+props.portfolio.img_thumb}
alt="" />
</div>
</div>
这是包含状态和模态的 Class。但是我不能改变状态来激活模态。
class Project extends React.Component
{
constructor(props, context) {
super(props, context);
this.state = {
modal: false,
}
this.toggle = this.toggle.bind(this);
}
toggle() {
this.setState({
modal: !this.state.modal
});
}
render(){
return (
<div className="row portfolioWrap">
// here resides our modal which activate once modal state changed
<div>
<Modal
isOpen={this.state.modal}
toggle={this.toggle}
className={this.props.className}>
<ModalHeader toggle={this.toggle}>Modal title</ModalHeader>
<ModalBody>
{this.state.gallery.map(gallery =>
<img
className="card-img-top"
src={"/assets/imgs/project/"+gallery} alt="" />)
}
</ModalBody>
<ModalFooter></ModalFooter>
</Modal>
</div>
// calling portfolio method inside the loop
{currentTodos.map(item => <Portfolio key={item.title} portfolio={item} />)}
</div>
)
}
}
我正在尝试从 Portfolio 功能中激活模式。但由于它在 class 范围之外,我无法访问该状态。有什么办法可以做到这一点?
您可以将 toggle
方法传递给您的 Portfolio
组件,然后从道具中使用它。
<Portfolio key={item.title} toggle={this.toggle} portfolio={item}
/>
然后在Portfolio
:
const Portfolio = (props) =>
<div className="col-sm-4">
<div className="mb-2">
<img
onClick={props.toggle}
className="card-img-top"
src={"/assets/imgs/project/"+props.portfolio.img_thumb}
alt="" />
</div>
</div>
我正在尝试通过从反应外部更改状态来调用我的模式 class。但到目前为止还没有运气。我尝试了以下方法:
我有一个名为 Portfolio 的方法,它需要在用户单击图像后激活模式
const Portfolio = (props) =>
<div className="col-sm-4">
<div className="mb-2">
<img
onClick={this.toggle}
className="card-img-top"
src={"/assets/imgs/project/"+props.portfolio.img_thumb}
alt="" />
</div>
</div>
这是包含状态和模态的 Class。但是我不能改变状态来激活模态。
class Project extends React.Component
{
constructor(props, context) {
super(props, context);
this.state = {
modal: false,
}
this.toggle = this.toggle.bind(this);
}
toggle() {
this.setState({
modal: !this.state.modal
});
}
render(){
return (
<div className="row portfolioWrap">
// here resides our modal which activate once modal state changed
<div>
<Modal
isOpen={this.state.modal}
toggle={this.toggle}
className={this.props.className}>
<ModalHeader toggle={this.toggle}>Modal title</ModalHeader>
<ModalBody>
{this.state.gallery.map(gallery =>
<img
className="card-img-top"
src={"/assets/imgs/project/"+gallery} alt="" />)
}
</ModalBody>
<ModalFooter></ModalFooter>
</Modal>
</div>
// calling portfolio method inside the loop
{currentTodos.map(item => <Portfolio key={item.title} portfolio={item} />)}
</div>
)
}
}
我正在尝试从 Portfolio 功能中激活模式。但由于它在 class 范围之外,我无法访问该状态。有什么办法可以做到这一点?
您可以将 toggle
方法传递给您的 Portfolio
组件,然后从道具中使用它。
<Portfolio key={item.title} toggle={this.toggle} portfolio={item}
/>
然后在Portfolio
:
const Portfolio = (props) =>
<div className="col-sm-4">
<div className="mb-2">
<img
onClick={props.toggle}
className="card-img-top"
src={"/assets/imgs/project/"+props.portfolio.img_thumb}
alt="" />
</div>
</div>