当前位置: 首页 > news >正文

react lazyLoad学习记录

react lazyLoad学习记录

  • 1.lazyLoad用处
  • 2.使用
    • 2.1 react-router-dom5版本写法
    • 2.2 react-router-dom6版本写法

1.lazyLoad用处

默认例如首页,如果有好十几个甚至百个路由,react是会默认一下全部把路由组件一下全部加载的,极可能造成页面卡顿。react lazyLoad就可以解决这个问题。

2.使用

我用的react版本是18,注意在主index.js中<React.StrictMode>要去掉,不然会出现路由变化了,控制台也不报错但是页面不跳转的问题.
在这里插入图片描述

2.1 react-router-dom5版本写法

import React, { Component,lazy,Suspense} from 'react'
import {NavLink,Route} from 'react-router-dom'import Loading from './Loading'
const Home = lazy(()=> import('./Home') )
const About = lazy(()=> import('./About'))export default class Demo extends Component {render() {return (<div><div className="row"><div className="col-xs-offset-2 col-xs-8"><div className="page-header"><h2>React Router Demo</h2></div></div></div><div className="row"><div className="col-xs-2 col-xs-offset-2"><div className="list-group">{/* 在React中靠路由链接实现切换组件--编写路由链接 */}<NavLink className="list-group-item" to="/about">About</NavLink><NavLink className="list-group-item" to="/home">Home</NavLink></div></div><div className="col-xs-6"><div className="panel"><div className="panel-body">{/* fallback可以写一个组件,但是这个组件就不能懒加载了,本来的作用就是如果网络等原因导致页面空白的话就用组件来替代 */}<Suspense fallback={<Loading/>}>{/* 注册路由 */}<Route path="/about" component={About}/><Route path="/home" component={Home}/></Suspense></div></div></div></div></div>)}
}

2.2 react-router-dom6版本写法

主要是引入和Suspense的改变

import React, { Component, lazy, Suspense } from "react";
import { NavLink, Route,Routes } from "react-router-dom";import Loading from "./Loading";
const Home = lazy(() => import("./Home"));
const About = lazy(() => import("./About"));export default class Demo extends Component {render() {return (<div><div className="row"><div className="col-xs-offset-2 col-xs-8"><div className="page-header"><h2>React Router Demo</h2></div></div></div><div className="row"><div className="col-xs-2 col-xs-offset-2"><div className="list-group">{/* 在React中靠路由链接实现切换组件--编写路由链接 */}<NavLink className="list-group-item" to="/about">About</NavLink><NavLink className="list-group-item" to="/home">Home</NavLink></div></div><div className="col-xs-6"><div className="panel"><div className="panel-body">{/* fallback可以写一个组件,但是这个组件就不能懒加载了,本来的作用就是如果网络等原因导致页面空白的话就用组件来替代 */}<Suspense fallback={<Loading />}>{/* 注册路由 */}<Routes><Route path="/about" element={<About/>} /><Route path="/home" element={<Home/>} /></Routes></Suspense></div></div></div></div></div>);}
}

需要注意的是,lazyLoad只有在第一次请求那个路由组件才会去调用资源请求,第二次就不会再去调用的了,有缓存。

http://www.lryc.cn/news/25303.html

相关文章:

  • 29 openEuler管理网络-配置网络绑定
  • RTT 全志D1s RDC2022纪念版开发板开箱使用分享与折腾记录
  • 24日常实习万得一面面径
  • MySQL的DML和DDL操作(1)
  • Kafka系列之:Kafka生产者和消费者
  • Linux进程间通信:信号量(一)
  • Python笔记一之excel的读取
  • JavaScript Number 数字对象
  • 设计模式-服务定位器模式
  • Android Dalvik虚拟机 GC流程分析
  • opencv读入图片注意事项
  • 学习渗透测试,考CISP-PTE还是考NISP-PT证书呢?
  • 记录自己遇到的关于Hashmap的面试题
  • mysql数据库之sql语句性能分析工具
  • 搭建SpringBoot项目
  • “一网统管”视频融合平台EasyCVR页面tab切换细节优化
  • 【Python入门第二十天】Python Lambda
  • 比特数据结构与算法(第四章_下)二叉树OJ(力扣:144,965,104,226,100,572)
  • 【C++】inline 内联函数
  • 如何审计一个智能合约
  • 不用PS,也能实现抠图的工具
  • 集群化存储的概述
  • asyncio 并发编程(一)
  • 春招冲刺(二):BFC 盒子面试题总结
  • Ep_计网面试题-本地IP地址怎么一层层向上转换?
  • MySQL高级三
  • set和map的基本使用
  • 已解决pip install wxPython模块安装失败
  • Linux基础——连接Xshell7
  • C++——智能指针1