1、 React.lazy
**React.lazy**和 Suspense 技术还不支持服务端渲染。如果你想要在使用服务端渲染的应用中使用,React官方推荐 Loadable Components 这个库。它有一个很棒的服务端渲染打包指南。
React.lazy 函数能像渲染常规组件一样处理动态引入(的组件)。
A.未使用懒加载时直接导入
import OtherComponent from './OtherComponent';
B.懒加载的使用
const OtherComponent = React.lazy(() => import('./OtherComponent'));
此代码将会在组件首次渲染时,自动导入包含 OtherComponent 组件的包。
React.lazy 接受一个函数,这个函数需要动态调用 import()。它必须返回一个 Promise,该 Promise 需要 resolve 一个 defalut export 的 React 组件。
C.使用 <Suupense> 标签包裹需要懒加载的组件
然后应在 Suspense 组件中渲染 lazy 组件,如此可以使用在等待加载 lazy 组件时做优雅降级(如 loading 指示器等)。
const OtherComponent = React.lazy(() => import('./OtherComponent'));function MyComponent() {return (<div><Suspense fallback={<div>Loading...</div>}><OtherComponent /></Suspense></div>);}
D. fallback 属性展示加载过程中显示的组件元素
fallback 属性接受任何在组件加载过程中想展示的 React 元素。可以将 Suspense 组件置于懒加载组件之上的任何位置。你甚至可以用一个 Suspense 组件包裹多个懒加载组件。
const OtherComponent = React.lazy(() => import('./OtherComponent'));const AnotherComponent = React.lazy(() => import('./AnotherComponent'));function MyComponent() {return (<div><Suspense fallback={<div>Loading...</div>}><section><OtherComponent /><AnotherComponent /></section></Suspense></div>);}
2、 Reac.lazy 懒加载组件中的错误处理 ErrorBoundary 的使用
如果模块加载失败(如网络问题),它会触发一个错误。可以通过异常捕获边界(Error boundaries)技术来处理这些情况,以显示良好的用户体验并管理恢复事宜。
import MyErrorBoundary from './MyErrorBoundary';const OtherComponent = React.lazy(() => import('./OtherComponent'));const AnotherComponent = React.lazy(() => import('./AnotherComponent'));const MyComponent = () => (<div><MyErrorBoundary><Suspense fallback={<div>Loading...</div>}><section><OtherComponent /><AnotherComponent /></section></Suspense></MyErrorBoundary></div>);
