react-路由懒加载

本文介绍了React路由懒加载的概念,旨在提升应用加载速度,仅加载当前访问的模块。详细阐述了两种实现方法:一是创建公共js文件,通过async-component.js和async-page.js进行按需加载;二是利用React的lazy函数和import()动态加载,并展示自定义loading界面。同时,强调了Switch在路由匹配中的高效作用。
摘要由CSDN通过智能技术生成

路由懒加载是什么意思?
在开发中 , 我们打开开发者工具, 会发现我们刚刚打开就会去加载所有页面.

路由懒加载就是只加载你当前点击的那个模块

按需去加载路由对应的资源, 可以提高加载速度 (一个页面加载过后再次访问不会重复加载)

实现原理:将路由相关的组件,不再直接导入了,而是改写成异步组件的写法,只有当函数被调用的时候,才去加载对应的组件内容

方法一: 重写

首先, 新建一个asynccComponent.js , 作为公共js

import {Component as ReactComponet} from 'react'
import React from "react";

export default function asyncComponent(getComponent) {

  return class AsyncComponent extends ReactComponet {

    state = {Component: null}

    componentDidMount() {
      if (!this.state.Component) {
        getComponent().then(Component => {
          this.setState({Component})
        })
      }
    }

    render() {
      const {Component} = this.state
      if (Component) {
        return <Component {...this.props} />
      }
      return null
    }
  }
}

然后写一个async-page.js 引入需要按需加载的页面

import asyncCompo
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Router v5 中,你可以使用 React.lazy() 和 Suspense 组件来实现路由懒加载。下面是一个示例: 首先,确保你已经安装了 `react-router-dom` 的版本为 5.x。 ```bash npm install react-router-dom@5 ``` 然后,你可以按照以下步骤来实现路由懒加载: 1. 导入需要使用的组件和函数: ```jsx import React, { Suspense, lazy } from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; ``` 2. 创建需要懒加载的组件: ```jsx const Home = lazy(() => import('./components/Home')); const About = lazy(() => import('./components/About')); const Contact = lazy(() => import('./components/Contact')); ``` 3. 使用懒加载的组件和路由: ```jsx function App() { return ( <Router> <Suspense fallback={<div>Loading...</div>}> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </Switch> </Suspense> </Router> ); } export default App; ``` 在上面的代码中,`Suspense` 组件用于在组件加载期间显示一个加载提示(例如 "Loading..."),直到组件加载完成。`fallback` 属性指定了加载期间显示的内容。 `lazy` 函数用于动态导入组件。传递给 `lazy` 函数的参数是一个返回 `import()` 方法的函数,该方法会异步加载组件。 在 `Route` 组件中,将懒加载的组件作为 `component` 属性的值传递。 这样,当用户访问相应的路由时,对应的组件将会被动态加载并渲染。 希望这个例子能帮到你!如果有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值