#389: fix react warning about setState on unmounted component

This commit is contained in:
SleepWalker 2018-02-12 22:20:53 +02:00
parent bd31aa1ebf
commit e91bb09c33

View File

@ -109,6 +109,8 @@ class PanelTransition extends Component {
panelId: this.props.Body && this.props.Body.type.panelId
};
timerIds = []; // this is a list of a probably running timeouts to clean on unmount
getChildContext() {
return {
auth: this.props.auth,
@ -121,7 +123,9 @@ class PanelTransition extends Component {
this.setState({isHeightDirty: false});
// wait till transition end
setTimeout(resolve, 200);
this.timerIds.push(
setTimeout(resolve, 200)
);
}
)
),
@ -148,13 +152,20 @@ class PanelTransition extends Component {
});
if (forceHeight) {
setTimeout(() => {
this.setState({forceHeight: 0});
}, 100);
this.timerIds.push(
setTimeout(() => {
this.setState({forceHeight: 0});
}, 100)
);
}
}
}
componentWillUnmount() {
this.timerIds.forEach((id) => clearTimeout(id));
this.timerIds = [];
}
render() {
const {contextHeight, forceHeight} = this.state;