【发布时间】:2019-07-12 23:12:09
【问题描述】:
我有一个模态框,里面有几个按钮。在外部单击时,我希望该模式关闭。我已将 ref 添加到父元素,它工作正常,当您单击外部时,一切都会关闭。但是,如果您单击此模式框内的按钮,它也会关闭。如何检测此 ref 内的子元素并且不允许关闭模式框?
public handleClickoutside() {
this.props.showMessage()
}
public handleClick = (e) => {
if (this.DOMArrowBox.current !== e.target) {
this.handleClickoutside()
}
}
public componentWillMount() {
document.addEventListener("mousedown", this.handleClick, false)
}
public componentWillUnmount() {
document.removeEventListener("mousedown", this.handleClick, false)
}
<div className={this.props.className} ref={this.DOMArrowBox}>
<Social />
<CallMe className="arrow__box-button" open={this.props.open} />
<Close
className="arrow-button_close"
onClick={this.props.showMessage}
/>
</div>
【问题讨论】:
-
代替 this.DOMArrowBox.current !== e.target ,试试 this.DOMArrowBox.contains(e.target) 一次
-
你可能对 Roko 的回答有帮助:stackoverflow.com/questions/14291093/…
标签: javascript reactjs