Avoid async import if the component is previously loaded (#4127)

This commit is contained in:
unarist 2017-07-09 21:52:03 +09:00 committed by Eugen Rochko
parent ce3a371eee
commit caf938562e

View file

@ -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();
}) })