当前位置: 首页 > news >正文

处理关于 React lazy 白屏的两种方案

这篇文章是今天在阅读 React 官方文档的时候看到的一个关于 处理 lazy 体验问题的小技巧,在这里记录一下

当我们使用 React.lazy 去懒加载一个路由组件,在不做任何其他处理的情况下从其他页面首次进入到这个懒加载的路由页面时,肯定会出现白屏的现象。

以前针对这种问题的处理方案无非就是使用Suspense 进行组件包裹,然后在其 fallback 属性上传入一个 Loading 组件。

<Suspense fallback={<Loading />}>// ...省略
</Suspense>

但是这种方案,在跳转的时候会出现的 Loading 的效果,如果 Loading 处理的不好的话那么体验其实很差。比如你从一个页面在进入懒加载页面之前,突然从当前页面直接进入一个只有 Loading的页面,再出现懒加载的页面。

React 官方针对这种问题是使用 startTransition 来降低路由跳转的任务优先级。

startTransition(() => {// 路由跳转
})

这么做的好处就是,当你触发了路由跳转的事件之后,由于路由跳转的优先级被降低了,所以会继续在当前页面等待懒加载资源的加载,然后才触发页面跳转。

当然这么做也有坏处,就是点击了之后可能会由于资源加载时间较长被用户误认为是服务出问题了,这个就看各自的取舍了,毕竟老板和产品的意图不是我们能决定的。

参考:React 中文文档

相关文章:

  • Linux和Windows安装PHP依赖管理工具Composer
  • 【微信小程序】流量主-激励视频(激励广告)下发策略,每天三次免费体验,然后再次点击触发激励视频,当日不再触发。
  • MySQL 优化及故障排查
  • 手机有线投屏到直播姬pc端教程
  • winform日历控件_进度条控件
  • C++面向对象程序设计 - 构造函数
  • Linux——信号概念与信号产生方式
  • U-net在乳腺癌医学图像分割方面的应用
  • vue-ueditor-wrap上传图片报错:后端配置项没有正常加载,上传插件不能正常使用
  • 6个黑科技网站,永久免费
  • java中的string和stringbuff和stringBuilter
  • 【学习笔记】java项目—苍穹外卖day03
  • vscode安装
  • 生命周期钩子
  • 百度网站收录提交入口
  • ES6指北【2】—— 箭头函数
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【5+】跨webview多页面 触发事件(二)
  • 【刷算法】从上往下打印二叉树
  • 08.Android之View事件问题
  • angular学习第一篇-----环境搭建
  • Fastjson的基本使用方法大全
  • JSDuck 与 AngularJS 融合技巧
  • react-native 安卓真机环境搭建
  • Redis学习笔记 - pipline(流水线、管道)
  • spark本地环境的搭建到运行第一个spark程序
  • 基于web的全景—— Pannellum小试
  • 理清楚Vue的结构
  • 如何在 Tornado 中实现 Middleware
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 走向全栈之MongoDB的使用
  • # 飞书APP集成平台-数字化落地
  • #{}和${}的区别是什么 -- java面试
  • #include<初见C语言之指针(5)>
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (汇总)os模块以及shutil模块对文件的操作
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • ... 是什么 ?... 有什么用处?
  • .“空心村”成因分析及解决对策122344
  • .net core 连接数据库,通过数据库生成Modell
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net Signalr 使用笔记
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 使窗口永不获得焦点
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net下的富文本编辑器FCKeditor的配置方法
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • ??eclipse的安装配置问题!??
  • [ IO.File ] FileSystemWatcher