From a652cb06475057e642db8093997c6f274c96d198 Mon Sep 17 00:00:00 2001 From: zhuangtianyu Date: Tue, 22 Dec 2020 18:01:06 +0800 Subject: [PATCH] fix: unable to trigger onClickOutside once mobile client resize to PC client. --- build/index.js | 6 ++++++ index.js | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/build/index.js b/build/index.js index d8d2e39..157d0cf 100644 --- a/build/index.js +++ b/build/index.js @@ -43,6 +43,10 @@ var ClickOutside = function (_Component) { if (el && !el.contains(e.target)) onClickOutside(e); }; + _this.resetIsTouch = function () { + return _this.isTouch = false; + }; + _this.getContainer = _this.getContainer.bind(_this); _this.isTouch = false; return _this; @@ -72,12 +76,14 @@ var ClickOutside = function (_Component) { value: function componentDidMount() { document.addEventListener('touchend', this.handle, true); document.addEventListener('click', this.handle, true); + window.addEventListener('resize', this.resetIsTouch, true); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { document.removeEventListener('touchend', this.handle, true); document.removeEventListener('click', this.handle, true); + window.removeEventListener('resize', this.resetIsTouch, true); } }]); diff --git a/index.js b/index.js index 012e065..52be0fc 100644 --- a/index.js +++ b/index.js @@ -24,11 +24,13 @@ export default class ClickOutside extends Component { componentDidMount() { document.addEventListener('touchend', this.handle, true) document.addEventListener('click', this.handle, true) + window.addEventListener('resize', this.resetIsTouch, true) } componentWillUnmount() { document.removeEventListener('touchend', this.handle, true) document.removeEventListener('click', this.handle, true) + window.removeEventListener('resize', this.resetIsTouch, true) } handle = e => { @@ -38,4 +40,6 @@ export default class ClickOutside extends Component { const el = this.container if (el && !el.contains(e.target)) onClickOutside(e) } + + resetIsTouch = () => this.isTouch = false }