From c3253bec85d517249165c0d45f0f427628e3e6d8 Mon Sep 17 00:00:00 2001 From: Vyrtsev Mikhail Date: Sat, 6 Jul 2019 17:11:27 +0300 Subject: [PATCH] fix: DropDown doesn't remove listeners on unmount --- frontend/app/components/dropdown/dropdown.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/app/components/dropdown/dropdown.tsx b/frontend/app/components/dropdown/dropdown.tsx index 82359008..4f6500c1 100644 --- a/frontend/app/components/dropdown/dropdown.tsx +++ b/frontend/app/components/dropdown/dropdown.tsx @@ -28,6 +28,9 @@ export default class Dropdown extends Component { this.state = { isActive: props.isActive || false, }; + + this.onOutsideClick = this.onOutsideClick.bind(this); + this.receiveMessage = this.receiveMessage.bind(this); } onTitleClick() { @@ -65,15 +68,15 @@ export default class Dropdown extends Component { } componentDidMount() { - document.addEventListener('click', e => this.onOutsideClick(e)); + document.addEventListener('click', this.onOutsideClick); - window.addEventListener('message', e => this.receiveMessage(e)); + window.addEventListener('message', this.receiveMessage); } componentWillUnmount() { - document.removeEventListener('click', e => this.onOutsideClick(e)); + document.removeEventListener('click', this.onOutsideClick); - window.removeEventListener('message', e => this.receiveMessage(e)); + window.removeEventListener('message', this.receiveMessage); } render(props: RenderableProps, { isActive }: State) {