React 中的延迟加载Lazy loading

React 中的延迟加载功能可让您将代码拆分成更小的块,仅在实际需要时加载应用程序特定部分所需的代码。这可以缩短应用程序的初始加载时间。

React 提供了一项称为动态导入的功能以及 React 的 Suspense 组件来实现延迟加载。

以下是如何使用 React.lazy() 和 Suspense 在 React 应用程序中实现路由延迟加载的示例

lazy() 用于仅在需要时动态导入组件。

Suspense 是 React 提供的一个组件,可让您"等待"动态导入加载,同时显示后备 UI(在本例中为简单的"正在加载..."消息)。

为要延迟加载的组件创建一个单独的文件

javascript 复制代码
// Products.js
import React from 'react';

const Products = () => {
  return <div>This is a lazy-loaded component!</div>;
};

export default Products;

使用 React.lazy() 在路由文件中动态导入组件

javascript 复制代码
const Prodcuts = React.lazy(() => import("./components/products/Products"));
javascript 复制代码
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
//  import Prodcuts from "./components/products/Products";
import PageNotFound from "./components/PagenotFound/PageNotFound";
import {
  createBrowserRouter,
  createRoutesFromElements,
  Route,
  RouterProvider,
} from "react-router-dom";
import Home from "./components/Home/Home";

const Prodcuts = React.lazy(() => import("./components/products/Products"));

const router = createBrowserRouter(
  createRoutesFromElements(
    <Route path="/" element={<App />}>
      <Route path="/" element={<Home />} 
      <Route
        path="prodcuts"
        element={
          <React.Suspense fallback={<>...</>}>
            <Prodcuts />
          </React.Suspense>
        }
      />
      <Route path="*" element={<PageNotFound />} />
    </Route>
  )
);

const root = ReactDOM.createRoot(document.getElementById("root"));

在上面的代码中,产品组件使用 React.lazy() 延迟加载。Suspense 组件用于在加载延迟加载组件时指定回退 UI。

运行您的应用程序:

当您导航到 /products 路由时,Products组件仅在需要时加载。

注意:Suspense 的 fallback prop 是必需的。它定义了在加载组件时将显示的 UI。您可以根据应用程序的设计和要求自定义此 UI。

谢谢 !!!感兴趣可以关注一下,我们一起学习

相关推荐
会有钱的-_-7 小时前
基于webpack的场景解决
前端·vue.js·webpack·安全性测试
野生的编程萌新7 小时前
【C++深学日志】从0开始的C++生活
c语言·开发语言·c++·算法
LFly_ice7 小时前
学习React-10-useTransition
前端·学习·react.js
咔咔一顿操作7 小时前
【CSS 3D 交互】实现精美翻牌效果:从原理到实战
前端·css·3d·交互·css3
知识分享小能手7 小时前
React学习教程,从入门到精通,React 构造函数(Constructor)完整语法知识点与案例详解(16)
前端·javascript·学习·react.js·架构·前端框架·vue
召摇7 小时前
Nue.js深度解析:极简主义前端框架的革新实践
前端·node.js
小徐_23337 小时前
uni-app 也能使用 App.vue?wot-starter 是这样实现的!
前端·uni-app
※※冰馨※※7 小时前
【c#】 使用winform如何将一个船的图标(ship.png)添加到资源文件
开发语言·windows·c#
入秋7 小时前
Three.js后期处理实战:镜头颜色、色差、点阵与颜色管道的深度解析
前端·three.js
深圳外环高速7 小时前
企业微信和页面离开事件
前端