commit: 1fc6cb499742c1a872ad717a689c58a80aeb714d
parent: eb832e88f44d661a504a091defc051e052eb1252
Author: alpaca-tc <alpaca-tc@alpaca.tc>
Date: Wed, 21 Jun 2017 03:37:09 +0900
Do not call setState from unmounted component (#3853)
Stop an executing task if the component already unmounted.
Diffstat:
1 file changed, 8 insertions(+), 0 deletions(-)
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
@@ -86,6 +86,8 @@ class Status extends ImmutablePureComponent {
this.node,
this.handleIntersection
);
+
+ this.componentMounted = true;
}
componentWillUnmount () {
@@ -96,6 +98,8 @@ class Status extends ImmutablePureComponent {
}
this.props.intersectionObserverWrapper.unobserve(this.props.id, this.node);
+
+ this.componentMounted = false;
}
handleIntersection = (entry) => {
@@ -116,6 +120,10 @@ class Status extends ImmutablePureComponent {
}
hideIfNotIntersecting = () => {
+ if (!this.componentMounted) {
+ return;
+ }
+
// When the browser gets a chance, test if we're still not intersecting,
// and if so, set our isHidden to true to trigger an unrender. The point of
// this is to save DOM nodes and avoid using up too much memory.