react路由懒加载_vue-router实现路由懒加载

react路由懒加载_vue-router实现路由懒加载路由懒加载是什么意思?在开发中,我们打开开发者工具,会发现我们刚刚打开就会去加载所有页面.路由懒加载就是只加载你当前点击的那个模块按需去加载路由对应的资源,可以提高加载速度(一个页面加载过后再次访问不会重复加载)实现原理:将路由相关的组件,不再直接导入了,而是改写成异步组件的写法,只有当函数被调用的时候,才去加载对应的组件内容方法一:重写首先,新建一个asynccComponent.js,作为公共jsimport{ComponentasReactComponet}fr

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

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

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

方法一: 重写

首先, 新建一个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 asyncComponent from './async-component'

export default asyncComponent(async () => {
  try {
    const module = await import('./b')
    return module.default
  } catch (e) {
    console.log(e);
  }
  return null
})

在index.js中

import React from 'react'
import { NavLink, Route } from 'react-router-dom'

import A from './async-page-a'
import B from './async-page-b'

export default class Lazy extends React.Component {
  render () {
    return (
      <div>
        <div>
          <NavLink to="/a">A啦啦</NavLink>
          <hr />
          <NavLink to="/b">B啦啦</NavLink>
        </div>
        <div>
          <Route path="/a" component={A} />
          <Route path="/b" component={B} />
        </div>
      </div>
    )
  }
}
方法二: lazy
  • 1.通过React的lazy函数配合import()函数动态加载路由组件 ===> 路由组件代码会被分开打包
    const A = lazy(() => import('./a'))
  • 2.通过指定在加载得到路由打包文件前显示一个自定义loading界面
<Suspense fallback={<h1>loading.....</h1>}>
  <Switch>
     <Route path="/a" component={A} />
     <Route path="/b" component={B} />
     <Redirect to="/a"/>
   </Switch>
 </Suspense>

Redirect : 匹配不上所有的路由 就匹配Redirect 里的路由
Switch: 通常情况下,path和component是一一对应的关系。
Switch可以提高路由匹配效率(单一匹配)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185056.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux 查看文件系统类型「建议收藏」

    linux 查看文件系统类型「建议收藏」查看linux文件系统的方式有多种,一般通用的就mount和df。具体如下:目录mountdffileparted mount df file parted

    2025年12月11日
    3
  • 物联网流量卡骗局_纯流量卡骗局

    物联网流量卡骗局_纯流量卡骗局冰河用多线程优化了亿级流量电商业务下的海量数据校对系统,性能直接提升了200%,这次将整个优化过程分享给大家,全程干货,建议收藏!!

    2022年8月22日
    7
  • 工作流程引擎:流程引擎对比「建议收藏」

    工作流程引擎:流程引擎对比「建议收藏」一.简介工作流引擎LiteFlow 需要提前定义好执行流程,不支持分布式执行,支持xml,json,yml,支持逻辑执行AirFlow ***** 支持分布式算子执行,不支持java算子执行,支持pythonDolphinScheduler ***** Azkaban可以跨服务执行,跨平台执行,flow支持dsl语法Oozie managerhadoopjobs,大数据任务调度框架KettleServerFlowable 与Activiti非常类似A

    2022年10月20日
    3
  • 下载whl文件,离线方式安装numpy包_python离线安装pip

    下载whl文件,离线方式安装numpy包_python离线安装pip一:单独下载文件1、下载whl离线文件到本地,放到c盘根目录(任意位置均可,只是方便安装)https://pypi.org/https://www.lfd.uci.edu/~gohlke/pythonlibs/(推荐用这个地址下载whl文件,国内源,速度快。ctrl+f找到自己需要的文件)2、cmd到存放whl文件的目录3、pip安装whl离线文件pipinstall****.whl(****.whl是我们下载的whl的文件名称)二、批量下载…

    2022年8月30日
    5
  • 鼠标捕获(setCapture,releaseCapture)的学习

    鼠标捕获(setCapture,releaseCapture)的学习鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象——对指定的对象设置鼠标捕获。这个对象会为当前应用程序或整个系统接收所有鼠标事件。所谓鼠标捕获,是指对鼠标事件(onmousedown,onmouseup,onmousemove,onclick,ondblclick,onmouseover,onmouseout)进行捕捉,使在容器内的子对象的鼠标事件均…

    2022年6月5日
    34
  • VC++常用功能开发「建议收藏」

    VC++常用功能开发「建议收藏」系列文章目录第一章:VC++ini配置文件封装类源代码第二章:VC++实现二维码(显示+保存图片)功能源代码第三章:VC++调节系统音量(与任务栏音量同步)源代码提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启..

    2022年5月2日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号