React.lazy(懒加载)

本文介绍了如何在React应用中实现组件的延迟加载,通过React的Suspense组件来展示加载状态。示例代码展示了如何使用lazy惰性加载Son1组件,并在加载期间显示'loading...'作为占位符。

使用lazy动态加载组件,使用Suspense包裹被懒加载的组件

语法:

import React from 'react'
const Son =React.lazy(()=>import('./Son1'))
const App=()=>{
  return <div>
    {/* fallblack里面可以写标签或者字符串在页面内容尚未加载出来时显示 */}
    <React.Suspense fallback={<h1>loading...</h1>}>
      <Son></Son>
    </React.Suspense>
  </div>
}
export default App
### 使用方法 在 React 中,`React.lazy` 与 `Suspense` 搭配使用可实现延迟加载。当使用 `React.lazy()` 引入一个组件后,就需要搭配 `Suspense` 组件。以下是具体的使用示例: ```jsx import React from "react"; const BComponent = React.lazy(() => import("./BComponent")); const CComponent = React.lazy(() => import("./CComponent")); const AComponent = () => { return ( <> <React.Suspense fallback={<div>loading...</div>}> <BComponent /> <CComponent /> </React.Suspense> </> ); }; export default AComponent; ``` 在这个例子中,`React.lazy` 用于动态导入 `BComponent` 和 `CComponent`,`Suspense` 组件的 `fallback` 属性指定了在组件加载过程中显示的内容,如加载提示信息 [^1]。 在路由级代码分割中也可使用 `React.lazy` 和 `Suspense`,例如: ```jsx // 传统的静态导入 // import BudgetPage from './budget/BudgetPage'; // import ReportsPage from './reports/ReportsPage'; // 优化后的动态导入 const BudgetPage = React.lazy(() => import('./budget/BudgetPage')); const ReportsPage = React.lazy(() => import('./reports/ReportsPage')); // 使用Suspense处理加载状态 function App() { return ( <Suspense fallback={<LoadingSpinner />}> <Router> <Route path="/budget" component={BudgetPage} /> <Route path="/reports" component={ReportsPage} /> </Router> </Suspense> ); } ``` 这里通过动态导入和 `Suspense` 实现了路由级的代码分割,在路由切换时按需加载组件 [^4]。 ### 原理及相关介绍 `React.lazy` 是 React 提供的一个函数,它允许代码以动态导入的方式加载组件。动态导入是 JavaScript 的一个特性,它可以在运行时加载模块,而不是在应用启动时就加载所有模块,从而实现代码分割。 `Suspense` 机制为开发者提供了一种声明式、组件化的方式来处理异步操作。它为并发渲染和优先级调度提供了基础,简化了复杂异步状态的管理。在组件加载过程中,`Suspense` 会显示 `fallback` 属性指定的内容,当组件加载完成后,再渲染实际的组件。这种架构设计提升了开发体验,同时为用户提供了更流畅、更响应式的应用体验 [^2]。 ### 性能优化方面 `React.lazy` 和 `Suspense` 是 React 性能优化的重要方法之一。通过代码分割(使用 `React.lazy` 和 `Suspense`),可以减少初始加载时需要下载的代码量,避免在应用启动时加载不必要的组件,从而提高应用的加载速度,尤其对于大型应用来说,性能提升更为明显 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值