【发布时间】:2016-09-12 13:44:46
【问题描述】:
我有一个基本的弹出窗口(图像),当您单击按钮时会出现。当您在该弹出窗口之外单击时,它应该关闭,但是当您在其中单击时,它应该保持打开状态并调用测试功能。它的初始状态 isPopupVisible 设置为 false。当您单击按钮时,我将状态设置为 true 以呈现弹出窗口。
问题是单击图像时未调用测试函数。我认为这是因为状态设置为 false 并且具有 onClick 函数的图像元素最初没有呈现。有谁知道如何解决这个问题?
(用 ecmascript 6 编写)
getInitialState () {
return {isPopupVisible: false}
},
onClick () {
if(!this.state.isPopupVisible){
this.setState({isPopupVisible: true});
document.body.addEventListener('click', this.onClickBody)
}
},
onClickBody () {
this.setState({isPopupVisible: false});
document.body.removeEventListener('click', this.onClickBody)
},
test () {
console.log('the onClick from the image works!');
},
showPopup () {
if(this.state.isPopupVisible){
return <div>
<img src='img.png' onClick={this.test} />
</div>
}else{
return null;
}
},
render () {
return (
<span>
<button onClick={this.onClick}>
See Popup
</button>
{this.showPopup()}
</span>
);
}
【问题讨论】:
-
点击kng的时候或者点击之前没有控制台报错吗?
-
页面加载或点击图片时没有错误。为了测试它,我将 this.state.isPopupVisible 设为 true,并且 onClick 有效。我只是不明白为什么它最初不渲染时不起作用。
标签: javascript event-handling reactjs