react lazyLoad加載使用詳解
更新時間:2023年03月03日 09:45:56 作者:?QSω[*邱╭
lazy是React提供的懶(動態(tài))加載組件的方法,React.lazy(),路由組件代碼會被分開打包,能減少打包體積、延遲加載首屏不需要渲染的組件,依賴內置組件Suspense標簽的fallback屬性,給lazy加上loading指示器組件,Suspense目前只和lazy配合實現(xiàn)組件等待加載指示器的功能
1.lazyLoad用處
默認例如首頁,如果有好十幾個甚至百個路由,react是會默認一下全部把路由組件一下全部加載的,極可能造成頁面卡頓。react lazyLoad就可以解決這個問題。
2.使用
我用的react版本是18,注意在主index.js中<React.StrictMode>要去掉,不然會出現(xiàn)路由變化了,控制臺也不報錯但是頁面不跳轉的問題.

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中靠路由鏈接實現(xiàn)切換組件--編寫路由鏈接 */}
<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中靠路由鏈接實現(xiàn)切換組件--編寫路由鏈接 */}
<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只有在第一次請求那個路由組件才會去調用資源請求,第二次就不會再去調用的了,有緩存。
到此這篇關于react lazyLoad加載使用詳解的文章就介紹到這了,更多相關react lazyLoad內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
React實現(xiàn)組件之間狀態(tài)共享的幾種方法
在開發(fā)現(xiàn)代Web應用時,管理組件之間的狀態(tài)共享是一個重要的課題,特別是在使用React這個流行的前端庫時,如何有效地在不同組件之間傳遞狀態(tài),確保應用的響應性和可維護性,是我們需要掌握的關鍵技能,在本文中,我們將探討幾種有效的狀態(tài)共享策略,需要的朋友可以參考下2025-02-02

