• React 如何添加路由懒加载


    1.第一种自己定义组件在加载时调用

    1.1在工具类文件夹utils下面创建一个asyncComponent.js文件写入一下代码

    1. import React, { Component } from 'react'
    2. export const asyncComponent = (fn) => {
    3. // return 一个组件
    4. return class MyComponent extends Component {
    5. constructor() {
    6. super()
    7. this.state = {
    8. C: null
    9. }
    10. }
    11. // 调用组件时会渲染当渲染完成后会执行componentDidMount这时候会调用fn
    12. componentDidMount() {
    13. // fn是一个异步的promise调用这时给组件进行复制重新渲染
    14. fn().then(module => {
    15. // console.log(mod);
    16. this.setState({
    17. C: module.default
    18. // module.default就是页面引进的真正要加载的组件
    19. })
    20. })
    21. }
    22. render() {
    23. let { C } = this.state
    24. return (
    25. <div>
    26. {C ? <C {...this.props}></C> : null}
    27. {/*{...this.props}是为了解决当前组件C没有Route所携带的信息无法跳转 但是如果想要必须接受,在App.js中route将信息传给Login,而Login就是此时类asyncComponent return的组件 所以进行结构赋值*/}
    28. </div>
    29. )
    30. }
    31. }
    32. }

    1.2在App.js中引入组件

    import {asyncComponent} from "./utils/asyncComponent"

    在App.js中改写路由方式

    let Login=asyncComponent(()=>{return import("./pages/Login/Login")})

    在App.js路由规则中定义路由规则

    2.使用React自带的 Suspense,lazy实现懒加载

    2.1在App.js中引入

    import React,{Suspense,lazy} from 'react'

    在定义的路由规则外面添加Loding..

    }在div中的内容在加载中显示,可以自定义

    1. {/* 路由出口 */}
    2. <Suspense fallback={<div>Loading...</div>}>
    3. <Switch>
    4. {/* 路由规则 这里的MyRoute是自己定义的路由组件用于做路由拦截,判断是否登录*/}
    5. <Route path="/login" component={Login}></Route>
    6. <MyRoute path="/index" component={Index}></MyRoute>
    7. <MyRoute path="/movie" component={Movie}></MyRoute>
    8. <MyRoute path="/movieDetail" component={MovieDetail}></MyRoute>
    9. <MyRoute path="/food" component={Food}></MyRoute>
    10. <MyRoute path="/foodDetail/:foodId" component={FoodDetail}></MyRoute>
    11. {/* 重定向 */}
    12. <Redirect to="/login"></Redirect>
    13. </Switch>
    14. </Suspense>

     

  • 相关阅读:
    7个理由让你的组织爱上OKR
    小红书推荐机制是怎样的?掌握推荐机制才能抓住流量
    zabbix触发器与动作
    Python高级技巧
    防抖和节流
    黑马Java热门面试题Redis(九)
    Spring循环依赖
    视频怎么压缩?把视频压缩的小一点这样做
    销售技巧之所遵循原则
    postgres-operator 原理解析- 章节 II 减少failover次数
  • 原文地址:https://blog.csdn.net/weixin_44786530/article/details/126905095