From 1d58c3ded46fbabc0905852ff8e1110c629a30bb Mon Sep 17 00:00:00 2001 From: antti-wunderdog Date: Wed, 14 Dec 2016 14:45:43 +0200 Subject: [PATCH] Remove slideback timer if the component is unmounted before the timeout has been triggered. --- SlideButton.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SlideButton.js b/SlideButton.js index de1e7b2..e2a373e 100644 --- a/SlideButton.js +++ b/SlideButton.js @@ -28,9 +28,16 @@ export class SlideButton extends Component { animatedX: new Animated.Value(0), released: false, swiped: true, + slideBackTimer: null }; } + componentWillUnmount() { + if (this.state.slideBackTimer) { + clearTimeout(this.state.slideBackTimer); + } + } + /* Button movement of > 40% is considered a successful slide */ isSlideSuccessful() { if (!this.props.slideDirection) { @@ -80,7 +87,7 @@ export class SlideButton extends Component { }); // Slide it back in after 1 sec - setTimeout(() => { + var slideBackTimer = setTimeout(() => { self.moveButtonIn(() => { self.setState({ released: false, @@ -89,6 +96,7 @@ export class SlideButton extends Component { }); }, 1000); + self.setState({ slideBackTimer: slideBackTimer }); } else { this.snapToPosition(() => { self.setState({