React.lazy()
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()相关推荐
- react.lazy 路由懒加载_React lazy/Suspense使用及源码解析
React v16.6.0已经发布快一年了,为保障项目迭代发布,没有及时更新react版本,最近由于开启了新项目,于是使用新的react版本进行了项目开发.项目工程如何搭建,如何满足兼容性要求,如何规 ...
- react-activation缓存React.lazy异步组件问题记录
1.背景 当前框架使用的路由规则是使用React.lazy动态绘制的,使用KeepAlive组件缓存时一直不能缓存 export const RouteWithChildrenSubRoutes = ...
- useRoutes与React.lazy的使用
注意react-router-dom的版本6.3.0 和reac版本18.0.0 routeConfig.js import React from 'react'; const Dashboard = ...
- React.lazy与Suspence实现延迟加载
React.lazy与Suspence实现延迟加载 1 代码分割 2 React.Lazy 3 Suspense 4 备注 1 代码分割 代码分割能够创建多个包并在运行时动态加载,它能够帮助我们&qu ...
- react hook之React.lazy()
也不怕大家笑话,看到react.lazy()我第一个想到的居然是vue 中的一个vue-lazy 用户懒加载的插件.但是这两个差别还是有点大的. 好了我们言归正传,开始来看看我们的react.lazy ...
- 【react】React.lazy
注意:React.lazy 和 Suspense 技术还不支持服务端渲染.如果你想要在使用服务端渲染的应用中使用,我们推荐 Loadable Components 这个库.它有一个很棒的服务端渲染打包 ...
- React开发(203):react代码分割之React.lazy
- react.lazy 路由懒加载_Vue面试题: 如何实现路由懒加载?
非懒加载 import List from '@/components/list.vue' const router = new VueRouter({routes: [{ path: '/list' ...
- react 日历组件_anujs1.5.1支持React.Suspense与lazy
React16是一个实验版本,除了测试它的新fiber架构外,还添加了大量新功能.其他React.Suspense与React.lazy就是重磅中的重磅. 随着前端的APP化,不断集成功能,页面越来越 ...
最新文章
- 多态时:成员特点,成员变量
- Backtrack5 下WEB模糊测试
- 【送】VMware 虚拟化知识思维导图
- 6-Qt6对象树及内存管理
- vb.net2019-多线程并行计算(6)
- Linux shell的和||
- 系统的Drawable(四)-LayerListDrawable
- 论发展的十大关系。总结过去,正视未来!!!
- echo 多行_Java中Scanner的用法:单行多行输入
- python安装pillow图形处理库
- 面对疫情等群体性危机,程序员如何在家高效办公?
- 四分位数(Quartiles)、十分位数(Deciles)和百分位数(Percentiles
- python3 与python2 异常处理的区别与联系
- FPGA学习——Vivado2017.4安装教程
- 数据通路、微操作序列
- 有源滤波器: 基于UAF42的50Hz陷波器设计
- html英文期刊参考文献,英文参考文献标准格式
- 手机logging什么意思_手机logging怎么关闭
- 幼儿学习品质提升的培养策略问卷
- C#:实现数据去重算法​(附完整源码)
热门文章
- 计算机网络 IPv4地址 最详的详解!!!
- WIFI WPA/WPA2加密方式
- Ubuntu20.04 编译Buildroot(支持Qt编译)
- java 消息队列 秒杀_【IDEA+SpringBoot+Java商城秒杀实战21】高并发秒杀系统接口优化 RabbitMQ异步下单...
- 关键部分CCriticalSection使用
- CFileDialog使用方法
- unity编辑器拓展整理(主要是siki的视频教程)
- 钢琴学习:B站:艺起钢琴:《即兴伴奏怎么加花?学钢琴必不可少的一步》
- spring boot整合Shiro实现单点登录
- 微信CRM和微博CRM的相同和不同