”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 React 项目中实现延迟加载和代码分割的分步指南

在 React 项目中实现延迟加载和代码分割的分步指南

发布于2024-11-01
浏览:700

Step by step guide to implementing lazy loading and code splitting in a React project

这是在 React 项目中实现延迟加载和代码分割的分步指南。我们将创建一个具有两条路线的简单应用程序,延迟加载组件。

第 1 步:创建一个新的 React 应用程序

如果您还没有,请使用 Create React App 创建一个新的 React 应用程序:

npx create-react-app lazy-loading-example
cd lazy-loading-example

第2步:安装React Router

安装react-router-dom用于路由:

npm install react-router-dom

第 3 步:设置延迟加载和代码分割

创建组件

  1. 在src目录下创建一个名为components的文件夹。
  2. 在组件内部,创建两个文件:Home.js 和 About.js。

Home.js

import React from 'react';

const Home = () => {
  return 

Home Page

; }; export default Home;

About.js

import React from 'react';

const About = () => {
  return 

About Page

; }; export default About;

更新App.js

现在,修改您的 App.js 文件以实现延迟加载和路由:

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

// Lazy load components
const Home = React.lazy(() => import('./components/Home'));
const About = React.lazy(() => import('./components/About'));

function App() {
  return (
    
      

      Loading...}>
        
          
          
        
      
    
  );
}

export default App;

第 4 步:运行您的应用程序

现在,运行您的应用程序以查看其实际情况:

npm start

第 5 步:测试延迟加载

  1. 打开浏览器并导航至 http://localhost:3000。
  2. 点击“Home”链接即可查看Home组件加载。
  3. 点击“About”链接可以看到About组件延迟加载。

要点

  • React.lazy用于动态导入组件,只有渲染时才会加载。
  • Suspense 用于处理加载状态,在获取延迟加载组件时显示回退。
  • 这种方法通过将代码分割成更小的块,显着减少了初始加载时间。

额外的增强功能

您可以通过以下方式进一步增强您的设置:

  • 在延迟加载的组件周围实现错误边界以捕获加载错误。
  • 针对大型应用程序使用 React Router 的高级路由策略。

如果您需要更多具体功能或其他帮助,请告诉我!

版本声明 本文转载于:https://dev.to/imyusufakhtar/step-by-step-guide-to-implementing-lazy-loading-and-code-splitting-in-a-react-project-4p0g?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-03-13
  • 我应该在班上创建灾难吗?
    我应该在班上创建灾难吗?
    何时需要创建析构函数? 在类设计中,开发者经常会纠结是否需要创建析构函数。 然而,理解析构函数的恰当用法至关重要。 创建析构函数的原因 通常只有当类持有昂贵的非托管资源(例如数据库连接或文件句柄)时,才需要析构函数。在这种情况下,析构函数负责在不再需要对象时释放这些资源,确保正确清理。 析构函数...
    编程 发布于2025-03-13
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-03-13
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制,控制元素的滚动行为对于确保用户体验和可访问性是必不可少的。一种这样的方案涉及限制动态大小的父元素中元素的滚动范围。问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期...
    编程 发布于2025-03-13
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-03-13
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-03-13
  • 在PHP和MySQL中如何将日期格式化为dd/mm/yyyy?
    在PHP和MySQL中如何将日期格式化为dd/mm/yyyy?
    如何以dd/mm/yyyy格式显示php mysql 答案: 使用strtotime iniester erie for intertotime(&&&&&&&&&&&&&&&得到,使用date()。 example: $ timestamp = strtotime($ date_from...
    编程 发布于2025-03-13
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-03-13
  • 在Python中如何将集合划分为所有可能的子集?
    在Python中如何将集合划分为所有可能的子集?
    在python 手头的任务是将一组元素分配到所有可能的子集中。例如,分区[1,2,3]产生以下子集: [[1],[2],[3]],[3]] [[1,2],[3]] [[1],[2,3]] [[1,3],[2]] [[1,2,3]] 递归解决方案 def partition(collection):...
    编程 发布于2025-03-13
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-03-13
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-03-13
  • C#正则表达式:精确匹配完整单词的技巧
    C#正则表达式:精确匹配完整单词的技巧
    在C#中使用正则表达式匹配整个单词 在使用正则表达式查找字符串中的匹配项时,确保只匹配整个单词至关重要。考虑一下在内容字符串中匹配诸如“shoes”、“shirt”和“pants”等特定单词的任务。 最初,人们可能会认为以下正则表达式就足够了: Regex.Match(content, keywo...
    编程 发布于2025-03-13
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-03-13
  • 在C#中如何实现AES加密?
    在C#中如何实现AES加密?
    C#中的AES加密:实用指南 简介 在数据安全领域,高级加密标准 (AES) 作为一种高效的对称加密算法而备受推崇。AES 利用其强大的 128 位、192 位或 256 位密钥,确保您的敏感信息免受未经授权的访问。 示例实现 如果您希望在 C# 应用程序中利用 AES 的强大功能,请考虑以下代码...
    编程 发布于2025-03-13
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-03-13

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3