import React, { Suspense, lazy, useEffect, useState } from 'react'; import { preloadRemote } from '@module-federation/runtime'; preloadRemote([ { nameOrAlias: 'manifest-provider', resourceCategory: 'all', }, ]); const Preload: React.FC = () => { const [manifestTime, setManifestTime] = useState(0); const [pureEntryTime, setPureEntryTime] = useState(0); const [manifestRemote, setManifestRemote] = useState(null); const [jsEntryRemote, setPureEntryRemote] = useState(null); // useEffect(() => { // }, [manifestRemote, jsEntryRemote]); const loadManifestProvider = () => { if (manifestRemote === null) { const manifestRemoteStartTime = Date.now(); import('manifest-provider/Component').then((m) => { const manifestRemoteEndTime = Date.now(); console.log('loadManifestProvider'); setManifestTime(manifestRemoteEndTime - manifestRemoteStartTime); // @ts-ignore setManifestRemote({ default: m.default }); }); } }; const loadJSEntryProvider = () => { if (jsEntryRemote === null) { const pureEntryRemoteStartTime = Date.now(); import('js-entry-provider/Component').then((m) => { const pureEntryRemoteEndTime = Date.now(); console.log( 'setPureEntryTime: ', pureEntryRemoteEndTime - pureEntryRemoteStartTime, ); setPureEntryTime(pureEntryRemoteEndTime - pureEntryRemoteStartTime); // @ts-ignore setPureEntryRemote({ default: m.default }); }); } }; // @ts-ignore const ManifestRemote = manifestRemote ? manifestRemote.default : null; // @ts-ignore const JSEntryRemote = jsEntryRemote ? jsEntryRemote.default : null; // @ts-ignore // const PassResult = passResult ? passResult.default : null; return (
| Manifest Provider | JS Entry Provider | |
| click button to load remote component | ||
| Component |
|
|
| time(ms) |
{manifestTime}
|
{pureEntryTime}
|