leiwuhen-67's blog leiwuhen-67's blog
首页
    • 《Vue》笔记
    • 《React》笔记
    • 《NodeJs》笔记
    • 《CSS》笔记
    • 《Redis》笔记
    • 基础入门
    • 《Mock》笔记
    • 《MySQL》笔记
    • 《Git》相关
影音视听
收藏
关于
GitHub (opens new window)

我的公众号

首页
    • 《Vue》笔记
    • 《React》笔记
    • 《NodeJs》笔记
    • 《CSS》笔记
    • 《Redis》笔记
    • 基础入门
    • 《Mock》笔记
    • 《MySQL》笔记
    • 《Git》相关
影音视听
收藏
关于
GitHub (opens new window)
  • React

    • 使用React脚手架快速搭建项目
    • hooks之useEffect
    • React之事件绑定及简写方式
    • React之props传值并对其进行限制
    • React之Refs的基本使用
    • React之生命周期钩子
    • React之key的使用
    • React之代理服务器配置
    • React之封装全局Loading组件
    • React之消息的发布-订阅(pubsub-js)
    • React之Redux的基本使用
    • React之react-redux的基本使用
    • React之redux的数据持久化存储
    • React之路由懒加载
    • React之Render Props的使用
    • React之createBrowserRouter
    • React之路径别名@配置
    • React之craco打包优化配置
    • React之项目国际化
    • React之postcss-pxtorem移动端适配
    • React之使用vite创建项目
    • React之ts类型标注汇总
    • React之使用 ant design搭建后台管理之踩坑
    • React之路由切换动画
    • React之使用vite创建组件库并发布到npm
    • React之项目打包部署到nginx
    • React之自定义组件添加className与style
  • React Native

  • 《React》笔记
  • React
心欲无痕
2024-03-22

React之路由懒加载

在项目中,经常不会是只有一两个组件,而是存在着许许多多的路由组件,而默认情况下,react 会全部加载,不管某个组件你是否用得上,一次性给你加载完,这样体验不太好。那么可不可以这样,就是在我们需要使用的时候才加载该组件呢?答案当然是有的,这里用到了 react 自带的 lazy 方法,在配置路由的时候这样配置

1、在路由配置文件中配置如下:

// /src/routes/routes.js
import {lazy} from 'react';
const Home = lazy(() => import("../components/Home"))
const Page1 = lazy(() => import("../components/Page1/Page1"))
const Page2 = lazy(() => import("../components/Page2/Page2"))

// 嵌套路由配置
const routes = [
	{
		path: "/",
		element: <Home />,
		children: [
			{
				path: "page1",
				element: <Page1 />
			},
			{
				path: "page2",
				element: <Page2 />
			}
		]
	},
]

// 非嵌套路由配置
// const routes = [
// 	{
// 		path: "/",
// 		element: <Home />,
// 		children: []
// 	},
// 	{
// 		path: "/page1",
// 		element: <Page1 />
// 	},
// 	{
// 		path: "/page2",
// 		element: <Page2 />
// 	}
// ]

export default routes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

2、在项目根目录下的 app 组件中配置如下:

import React, { Suspense } from 'react';
import { BrowserRouter as Router, useRoutes } from 'react-router-dom';
import routes from './routes/routes.js'

export default function App () {
  const GetRoutes = () => {
    const route = useRoutes(routes)
    return route
  }
  return (
    <Router>
    	{/* Suspense是必须要配置的,否则会报错,fallback表示懒加载中的提示,当组件未加载时展示该内容 */}
      <Suspense fallback={<div>Loading...</div>}>
        <GetRoutes />
      </Suspense>
    </Router>
  )
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

这样,路由懒加载功能就实现了,需要用到某个组件时才会加载,而不是一次性加载完。

编辑 (opens new window)
上次更新: 7/1/2024, 4:56:33 PM
React之redux的数据持久化存储
React之Render Props的使用

← React之redux的数据持久化存储 React之Render Props的使用→

Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式