From a4f8da5355fb3ab71dc28ef0c1cfcbbc991aef2b Mon Sep 17 00:00:00 2001 From: JanuszP Date: Sun, 2 Apr 2017 13:58:16 +0200 Subject: [PATCH] Esc key event listener leakage fixed (#1376) --- components/overlay/Overlay.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/overlay/Overlay.js b/components/overlay/Overlay.js index cf5001ce..d33a2c7f 100644 --- a/components/overlay/Overlay.js +++ b/components/overlay/Overlay.js @@ -24,7 +24,7 @@ class Overlay extends Component { componentDidMount() { const { active, lockScroll, onEscKeyDown } = this.props; - if (onEscKeyDown) document.body.addEventListener('keydown', this.handleEscKey.bind(this)); + if (onEscKeyDown) document.body.addEventListener('keydown', this.handleEscKey); if (active && lockScroll) document.body.style.overflow = 'hidden'; } @@ -44,8 +44,12 @@ class Overlay extends Component { } componentDidUpdate(prevProps) { - if (this.props.active && !prevProps.active && this.props.onEscKeyDown) { - document.body.addEventListener('keydown', this.handleEscKey.bind(this)); + if (this.props.onEscKeyDown) { + if (this.props.active && !prevProps.active) { + document.body.addEventListener('keydown', this.handleEscKey); + } else if (!this.props.active && prevProps.active) { + document.body.removeEventListener('keydown', this.handleEscKey); + } } }