不,对于每个组件都不需要。用于每个布局或页面是有意义的。一个好的起点是路线。网络上的大多数人都习惯于花费一些时间来加载页面转换。您还倾向于一次重新渲染整个页面,因此您的用户不太可能同时与页面上的其他元素进行交互。
例如,您为新闻聚合器创建应用程序。您的应用程序包括两个页面,例如NewsList
和NewsItemPage
。每个页面都包含几个不同的组件。在这个例子中,为每个其他页面使用延迟加载组件是有意义的。然后它会加载它需要的组件。
该应用程序还有一个Header
和Footer
。它们应该以通常的方式加载。由于它们用于每个页面,因此异步加载没有意义。
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>
);