在寫popover組件的時候倔韭,需要捕獲當前組件外部的點擊事件术浪,而react本身沒有提供這一塊的api,怎么解決呢寿酌,在網(wǎng)上找了資料胰苏,答題解決方案 如此。
看了以上這幾種解決方案之后醇疼,覺得都不是很優(yōu)雅硕并,所以又開始尋找新的方法法焰。
其實想法和邏輯都很簡單:
- 監(jiān)聽mousedown事件。
- 組件內(nèi)部阻止冒泡倔毙。
這樣做就可以讓內(nèi)部點擊執(zhí)行內(nèi)部的操作埃仪,外部點擊執(zhí)行外部的操作。
具體代碼如下:
componentDidMount() {
document.addEventListener('mousedown', this.handleClickOutside, false);
}
componentWillUnmount() {
document.removeEventListener('mousedown', this.hiddenOptions, false);
}
handleClickOutside(e) {
e.stopPropagation();
this.setState({ show: false });
}
handleClickInside(e) {
e.stopPropagation();
this.setState({ show: true });
}