【发布时间】:2023-03-04 08:34:01
【问题描述】:
我有一个 modal 反应组件,带有一个打开模式的按钮。模式也有一个关闭按钮。这是代码和模态的样子:
class Modal extends React.Component {
static defaultProps = {
title: "Modal Title",
float: false,
color: "pink",
children: <div>Add children here!</div>
}
constructor(props) {
super(props)
this.state = {
show: false
}
}
openModal() {
this.setState(
{ show: true }
)
}
closeModal() {
this.setState(
{ show: false }
);
}
render() {
return (
<div>
<button className={"modal-button" + " " + this.props.color} onClick={() => this.openModal()}>{this.props.title}</button>
{this.state.show && <div className={"modal fade-in" + " " + (this.props.float ? "modal-float" : null)}>
<div className="modal-head">
<span>{this.props.title}</span>
<button id='button' onClick={() => this.closeModal()}>x</button>
</div>
<div className="modal-body">
{this.props.children}
</div>
</div>}
</div>
)
}
}
我想关闭在外面点击的模式。在另一个问题中,我看到了这样的代码
handleClick = event => {
event.preventDefault();
this.setState({ showModal: true }, () => {
document.addEventListener("click", this.closeMenu);
});
};
closeMenu = () => {
this.setState({ menuOpen: false }, () => {
document.removeEventListener('click', this.closeMenu);
});
}
但当我在模态框内单击时,它也会关闭模态框。
【问题讨论】:
-
这能回答你的问题吗? How do I detect a click outside an element?
标签: javascript reactjs