Esc key event listener leakage fixed (#1376)

old
JanuszP 2017-04-02 13:58:16 +02:00 committed by Javi Velasco
parent 509e846631
commit a4f8da5355
1 changed files with 7 additions and 3 deletions

View File

@ -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);
}
}
}