forked from cybrespace/mastodon
Avoid async import if the component is previously loaded (#4127)
This commit is contained in:
parent
ce3a371eee
commit
caf938562e
|
@ -26,6 +26,8 @@ class Bundle extends React.Component {
|
||||||
onFetchFail: noop,
|
onFetchFail: noop,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cache = {}
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
mod: undefined,
|
mod: undefined,
|
||||||
forceRender: false,
|
forceRender: false,
|
||||||
|
@ -58,8 +60,17 @@ class Bundle extends React.Component {
|
||||||
this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
|
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()
|
return fetchComponent()
|
||||||
.then((mod) => {
|
.then((mod) => {
|
||||||
|
Bundle.cache[fetchComponent.name] = mod;
|
||||||
this.setState({ mod: mod.default });
|
this.setState({ mod: mod.default });
|
||||||
onFetchSuccess();
|
onFetchSuccess();
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue