🐛 just prefetch the apps which not loaded, rather than the loading or loaded error ones (#980)

This commit is contained in:
Kuitos 2020-10-10 15:51:32 +08:00 committed by GitHub
parent b57f94cff1
commit 0564c00236

View File

@ -5,7 +5,7 @@
import { Entry, importEntry, ImportEntryOpts } from 'import-html-entry';
import { isFunction } from 'lodash';
import { getMountedApps } from 'single-spa';
import { getAppStatus, getMountedApps, NOT_LOADED } from 'single-spa';
import { AppMetadata, PrefetchStrategy } from './interfaces';
type RequestIdleCallbackHandle = any;
@ -77,14 +77,14 @@ function prefetch(entry: Entry, opts?: ImportEntryOpts): void {
function prefetchAfterFirstMounted(apps: AppMetadata[], opts?: ImportEntryOpts): void {
window.addEventListener('single-spa:first-mount', function listener() {
const mountedApps = getMountedApps();
const notMountedApps = apps.filter(app => mountedApps.indexOf(app.name) === -1);
const notLoadedApps = apps.filter(app => getAppStatus(app.name) === NOT_LOADED);
if (process.env.NODE_ENV === 'development') {
console.log(`[qiankun] prefetch starting after ${mountedApps} mounted...`, notMountedApps);
const mountedApps = getMountedApps();
console.log(`[qiankun] prefetch starting after ${mountedApps} mounted...`, notLoadedApps);
}
notMountedApps.forEach(({ entry }) => prefetch(entry, opts));
notLoadedApps.forEach(({ entry }) => prefetch(entry, opts));
window.removeEventListener('single-spa:first-mount', listener);
});