gpt4 book ai didi

javascript - React 延迟加载 - 何时使用

转载 作者:行者123 更新时间:2023-12-03 07:06:22 31 4
gpt4 key购买 nike

我有一个相当大的应用程序,现在它的捆绑包大小约为 2mb(大约 3 个 block )。为了缩短加载时间,我决定开始使用相对较新的 React Lazy .
这是一个惰性导入的示例:

const Wizard = React.lazy(() => import('./components/wizards/Wizard'));
我理解大体的想法,但我仍然很难理解缺点是什么,除了不时地等待一段时间来加载一个 block 。
根据我阅读的内容,我没有理由使用常规导入。
我的问题是:我应该只对应用程序中的每个组件导入使用惰性导入吗?为什么?为什么不?
我很想听听你们的想法。

最佳答案

不,对于每个组件都不需要它。用于每个布局或页面是有意义的。一个好的起点是路线。网络上的大多数人习惯于页面转换需要一些时间来加载。您还倾向于一次重新渲染整个页面,因此您的用户不太可能同时与页面上的其他元素进行交互。

例如,您为新闻聚合器创建应用程序。您的申请包括两个页面,例如 NewsListNewsItemPage .每个页面都包含几个不同的组件。在此示例中,为每个其他页面使用延迟加载组件是有意义的。然后它会加载它需要的组件。

该应用程序还有一个 HeaderFooter .它们应该以通常的方式加载。由于它们在每个页面上都使用,因此异步加载没有意义。

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import React, { Suspense, lazy } from 'react';

import Header from './components/Header';
import Footer from './components/Footer';

const NewsList = lazy(() => import('./pages/NewsList'));
const NewsItemPage = lazy(() => import('./pages/NewsItemPage'));

const App = () => (
<Router>
<Header />
<Suspense fallback={<div>Loading...</div>}>
<Switch>
<Route exact path="/" component={NewsList}/>
<Route path="/news/:id" component={NewsItemPage}/>
</Switch>
</Suspense>
<Footer />
</Router>
);

关于javascript - React 延迟加载 - 何时使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60390144/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com