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可以提高路由匹配效率(单一匹配)。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • BD和DVD区域划分

    BD和DVD区域划分BD和DVD区域划分BD:A区:只能是在美国、日本以及香港、台湾等东南亚地区正常播放;B区:只能在欧洲和澳洲等国家正常播放;C区:是在中国大陆、俄罗斯和印度三国才能正常播放。DVD:第一区为:美国、加拿大;第二区为:日本、欧洲、埃及、南非、中东;第三区为:中国台湾、中国香港特别行政区、南韩、东南亚;第四区为:澳洲、新西兰、中南美洲、南太平洋岛屿;第五区为:俄罗斯、蒙古、印度

  • 钓鱼诈骗网站哪里举报_如何识别诈骗

    钓鱼诈骗网站哪里举报_如何识别诈骗目录:一、起因二、识别方法——看域名三、如何举报一、起因事情的起因是这样的,今天收到个群邮件,里面有个所谓的邀请函,长下面这样:没有内容,只有一个附件,是一个HTML文件,俗称网页。其实这种的一看就是钓鱼或者诈骗网站,不过出于好奇,我还是想把它下下来看一下。出于安全考虑,首先看一下源码,源码如下:&amp;amp;lt;divstyle=&amp;quot;LINE-HEIGHT:-9999px;DISPLA…

  • Databus简介「建议收藏」

    Databus简介「建议收藏」1.背景在互联网架构中,数据系统通常分为真实数据(source-of-truth)系统,作为基础数据库,存储用户产生的写操作;以及衍生数据库或索引,提供读取和其他复杂查询操作。后者常常衍生自主数据存储,会对其中的数据做转换,有时还要包括复杂的业务逻辑处理。缓存中的数据也来自主数据存储,当主数据存储发生变化,缓存中的数据就需要刷新,或是转为无效。这样架构自然而然的一个问题就是如何保障基础数

    2022年10月17日
  • 【转载】这才是真正的表扩展方案

    【转载】这才是真正的表扩展方案

    2021年11月20日
  • Pyhton 单行、多行注释方法

    Pyhton 单行、多行注释方法

    2021年10月28日
  • 按位与、按位异或、按位取反「建议收藏」

    按位与、按位异或、按位取反「建议收藏」&按位与|按位或^按位异或1.按位与运算按位与运算符”&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001(1的二进制补码)可见9&5=1。按位与运算通常用来对某些位

发表回复

您的电子邮箱地址不会被公开。

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