commit: caf938562ef0d0fdb03bf57f15bbab8d76c5b4c0
parent: ce3a371eeeaae35e49f1938ede5eb6105c764fbc
Author: unarist <m.unarist@gmail.com>
Date: Sun, 9 Jul 2017 21:52:03 +0900
Avoid async import if the component is previously loaded (#4127)
Diffstat:
1 file changed, 11 insertions(+), 0 deletions(-)
diff --git a/app/javascript/mastodon/features/ui/components/bundle.js b/app/javascript/mastodon/features/ui/components/bundle.js
@@ -26,6 +26,8 @@ class Bundle extends React.Component {
onFetchFail: noop,
}
+ static cache = {}
+
state = {
mod: undefined,
forceRender: false,
@@ -58,8 +60,17 @@ class Bundle extends React.Component {
this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
}
+ if (Bundle.cache[fetchComponent.name]) {
+ const mod = Bundle.cache[fetchComponent.name];
+
+ this.setState({ mod: mod.default });
+ onFetchSuccess();
+ return Promise.resolve();
+ }
+
return fetchComponent()
.then((mod) => {
+ Bundle.cache[fetchComponent.name] = mod;
this.setState({ mod: mod.default });
onFetchSuccess();
})