cleanup listeners on document before unmount

old
Cyril Sobierajewicz 2016-02-10 17:48:14 +01:00
parent 8d2e8ca338
commit 68b23d2919
4 changed files with 20 additions and 0 deletions

View File

@ -43,6 +43,12 @@ class Dropdown extends React.Component {
}
}
componentWillUnmount () {
if (this.state.active) {
events.removeEventsFromDocument({click: this.handleDocumentClick});
}
}
handleDocumentClick = (event) => {
if (this.state.active && !events.targetIsDescendant(event, ReactDOM.findDOMNode(this))) {
this.setState({active: false});

View File

@ -83,6 +83,12 @@ class Menu extends React.Component {
}
}
componentWillUnmount () {
if (this.state.active) {
events.removeEventsFromDocument({click: this.handleDocumentClick});
}
}
handleDocumentClick = (event) => {
if (this.state.active && !events.targetIsDescendant(event, ReactDOM.findDOMNode(this))) {
this.setState({active: false, rippled: false});

View File

@ -55,6 +55,9 @@ class Slider extends React.Component {
componentWillUnmount () {
window.removeEventListener('resize', this.handleResize);
events.removeEventsFromDocument(this.getMouseEventMap());
events.removeEventsFromDocument(this.getTouchEventMap());
events.removeEventsFromDocument(this.getKeyboardEvents());
}
handleInputFocus = () => {

View File

@ -30,6 +30,11 @@ class Hand extends React.Component {
this.setState({knobWidth: this.refs.knob.offsetWidth});
}
componentWillUnmount () {
events.removeEventsFromDocument(this.getMouseEventMap());
events.removeEventsFromDocument(this.getTouchEventMap());
}
getMouseEventMap () {
return {
mousemove: this.handleMouseMove,