我有一個基本的彈出窗口(圖像),當你點擊一個按鈕時出現。當您在彈出窗口外單擊時,它應該關閉,但是當您單擊它時,它應該保持打開並調用測試功能。它的初始狀態isPopupVisible被設置爲false。當你點擊按鈕時,我將狀態設置爲true,呈現彈出窗口。反應組件onClick處理程序不工作
問題是當你點擊圖像時測試函數沒有被調用。我認爲這是因爲狀態設置爲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>
);
}
不要點擊之前clickkng或當你在控制檯中的任何錯誤? – 2015-02-11 07:22:15
加載頁面或單擊圖像時不會出現錯誤。爲了測試它,我使this.state.isPopupVisible爲true,並且onClick工作。我只是無法弄清楚爲什麼最初不渲染時它不起作用。 – Donielle 2015-02-11 07:30:48