react lazyLoad加載使用詳解
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可以寫一個組件,但是這個組件就不能懶加載了,本來的作用就是如果網(wǎng)絡等原因導致頁面空白的話就用組件來替代 */}
<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可以寫一個組件,但是這個組件就不能懶加載了,本來的作用就是如果網(wǎng)絡等原因導致頁面空白的話就用組件來替代 */}
<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?Native?加載H5頁面的實現(xiàn)方法
這篇文章主要介紹了React?Native?加載H5頁面的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
React Native中導航組件react-navigation跨tab路由處理詳解
這篇文章主要給大家介紹了關于React Native中導航組件react-navigation跨tab路由處理的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-10-10
React中super()和super(props)的區(qū)別小結
本文主要介紹了React中super()和super(props)的區(qū)別小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03
使用react-router4.0實現(xiàn)重定向和404功能的方法
本篇文章主要介紹了使用react-router4.0實現(xiàn)重定向和404功能的方法,具有一定的參考價值,有興趣的可以了解一下2017-08-08
react性能優(yōu)化達到最大化的方法 immutable.js使用的必要性
這篇文章主要為大家詳細介紹了react性能優(yōu)化達到最大化的方法,一步一步優(yōu)化react性能的過程,告訴大家使用immutable.js的必要性,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03

