我正在处理一个遗留的React应用程序,因此很多部分无法进行推理,只能被简单接受。
所以,我有几个组件会加载大量的依赖项,显然对于第一次渲染并不重要。因此,我尝试了以下做法:
const HeavyComp = lazy(() => import("HeavyComponent.jsx");
function Home() {
return <div>
<HeavyComp />
</div>
}
由于这个原因,
HeavyComponent
作为主要包的一部分被加载,但只有在该组件加载完后才可见。这有助于减少脚本时间,但 FCP 仍然很遥远。因此,我尝试了以下方法:
function Home() {
const [ heavyComponent. setHeavyComponent ] = useState(null);
useEffect(() => {
setHeavyComponent(
lazy(() => import("HeavyComponent.jsx")
);
}, []);
return <div>
{
heavyComponent && <heavyComponent />
}
</div>
}
我以为这会有所帮助,但和之前一样,FCP 仍然要等待 heavyComponent
被下载、解析和渲染完毕才能显示。因此,我的唯一选择是使用 setTimeout
或更好的 requestIdleCallback
使其异步。
这是最好的解决方案吗?还有更好的选择吗?
FCP
?您能先澄清一下吗? - windmaomao{ isTrue()? <div>True</div>: <Header /> }
。在这种情况下,Header根本没有被下载,只有在需要时才会下载。 - Uday Reddy