React.lazy 能实现像渲染常规组件一样处理动态引入的组件。

允许你定义一个动态加载的组件。这有助于缩减 bundle 的体积,并延迟加载在初次渲染时未用到的组件。

import React, { Suspense } from 'react';const OtherComponent = React.lazy(() => import('./OtherComponent'));function MyComponent() {return (<div><Suspense fallback={<div>Loading...</div>}><OtherComponent /></Suspense></div>);
}

React.lazy 接受一个函数,这个函数需要动态调用 import()。它必须返回一个 Promise,该 Promise 需要 resolve 一个 default export 的 React 组件。

请注意,渲染 lazy 组件依赖该组件渲染树上层的 <React.Suspense> 组件。这是指定加载指示器(loading indicator)的方式,以防其组件树中的某些子组件尚未具备渲染条件。

应在 Suspense 组件中渲染 lazy 组件,如此使得我们可以使用在等待加载 lazy 组件时做优雅降级(如 loading 指示器等)。

fallback 属性接受任何在组件加载过程中你想展示的 React 元素。你可以将 Suspense 组件置于懒加载组件之上的任何位置。你甚至可以用一个 Suspense 组件包裹多个懒加载组件。

import React, { Suspense } from 'react';const OtherComponent = React.lazy(() => import('./OtherComponent'));
const AnotherComponent = React.lazy(() => import('./AnotherComponent'));function MyComponent() {return (<div><Suspense fallback={<div>Loading...</div>}><section><OtherComponent /><AnotherComponent /></section></Suspense></div>);
}

异常捕获边界(Error boundaries)

如果模块加载失败(如网络问题),它会触发一个错误。

可以通过异常捕获边界(Error boundaries)技术来处理这些情况,以显示良好的用户体验并管理恢复事宜。

import React, { Suspense } from 'react';
import MyErrorBoundary from './MyErrorBoundary';const OtherComponent = React.lazy(() => import('./OtherComponent'));
const AnotherComponent = React.lazy(() => import('./AnotherComponent'));const MyComponent = () => (<div><MyErrorBoundary><Suspense fallback={<div>Loading...</div>}><section><OtherComponent /><AnotherComponent /></section></Suspense></MyErrorBoundary></div>
);

React.lazy()相关推荐

  1. react.lazy 路由懒加载_React lazy/Suspense使用及源码解析

    React v16.6.0已经发布快一年了,为保障项目迭代发布,没有及时更新react版本,最近由于开启了新项目,于是使用新的react版本进行了项目开发.项目工程如何搭建,如何满足兼容性要求,如何规 ...

  2. react-activation缓存React.lazy异步组件问题记录

    1.背景 当前框架使用的路由规则是使用React.lazy动态绘制的,使用KeepAlive组件缓存时一直不能缓存 export const RouteWithChildrenSubRoutes = ...

  3. useRoutes与React.lazy的使用

    注意react-router-dom的版本6.3.0 和reac版本18.0.0 routeConfig.js import React from 'react'; const Dashboard = ...

  4. React.lazy与Suspence实现延迟加载

    React.lazy与Suspence实现延迟加载 1 代码分割 2 React.Lazy 3 Suspense 4 备注 1 代码分割 代码分割能够创建多个包并在运行时动态加载,它能够帮助我们&qu ...

  5. react hook之React.lazy()

    也不怕大家笑话,看到react.lazy()我第一个想到的居然是vue 中的一个vue-lazy 用户懒加载的插件.但是这两个差别还是有点大的. 好了我们言归正传,开始来看看我们的react.lazy ...

  6. 【react】React.lazy

    注意:React.lazy 和 Suspense 技术还不支持服务端渲染.如果你想要在使用服务端渲染的应用中使用,我们推荐 Loadable Components 这个库.它有一个很棒的服务端渲染打包 ...

  7. React开发(203):react代码分割之React.lazy

  8. react.lazy 路由懒加载_Vue面试题: 如何实现路由懒加载?

    非懒加载 import List from '@/components/list.vue' const router = new VueRouter({routes: [{ path: '/list' ...

  9. react 日历组件_anujs1.5.1支持React.Suspense与lazy

    React16是一个实验版本,除了测试它的新fiber架构外,还添加了大量新功能.其他React.Suspense与React.lazy就是重磅中的重磅. 随着前端的APP化,不断集成功能,页面越来越 ...

最新文章

  1. 多态时:成员特点,成员变量
  2. Backtrack5 下WEB模糊测试
  3. 【送】VMware 虚拟化知识思维导图
  4. 6-Qt6对象树及内存管理
  5. vb.net2019-多线程并行计算(6)
  6. Linux shell的和||
  7. 系统的Drawable(四)-LayerListDrawable
  8. 论发展的十大关系。总结过去,正视未来!!!
  9. echo 多行_Java中Scanner的用法:单行多行输入
  10. python安装pillow图形处理库
  11. 面对疫情等群体性危机,程序员如何在家高效办公?
  12. 四分位数(Quartiles)、十分位数(Deciles)和百分位数(Percentiles
  13. python3 与python2 异常处理的区别与联系
  14. FPGA学习——Vivado2017.4安装教程
  15. 数据通路、微操作序列
  16. 有源滤波器: 基于UAF42的50Hz陷波器设计
  17. html英文期刊参考文献,英文参考文献标准格式
  18. 手机logging什么意思_手机logging怎么关闭
  19. 幼儿学习品质提升的培养策略问卷
  20. C#:实现数据去重算法​(附完整源码)

热门文章

  1. 计算机网络 IPv4地址 最详的详解!!!
  2. WIFI WPA/WPA2加密方式
  3. Ubuntu20.04 编译Buildroot(支持Qt编译)
  4. java 消息队列 秒杀_【IDEA+SpringBoot+Java商城秒杀实战21】高并发秒杀系统接口优化 RabbitMQ异步下单...
  5. 关键部分CCriticalSection使用
  6. CFileDialog使用方法
  7. unity编辑器拓展整理(主要是siki的视频教程)
  8. 钢琴学习:B站:艺起钢琴:《即兴伴奏怎么加花?学钢琴必不可少的一步》
  9. spring boot整合Shiro实现单点登录
  10. 微信CRM和微博CRM的相同和不同