React 的设计理念(React 哲学)

news2024/10/7 10:12:56

文章目录

    • React 的设计理念 的理解
      • 解决 CPU 瓶颈
      • 解决 IO 瓶颈

React 的设计理念 的理解

从 React 官网中的 React 哲学文档中,可以看出 React 目的是实现快速响应

在这里插入图片描述

影响快速响应的因素:计算能力和网络延迟,即 CPU 和 IO 的瓶颈

解决 CPU 瓶颈

浏览器一般是是 16.6ms 刷新一次,在这 16.6 ms 中,会依次执行 JS 脚本执行,样式布局,样式绘制,如果在 JS 脚本执行超过了 16.6ms,那就来不及执行后面两步,就会造成掉帧卡顿的现象

在这里插入图片描述
在解决这个掉帧卡顿的问题中,我们一般有 同步更新,防抖,节流等方法,但是都是治标不治本。

React 从根本上解决这个问题:将同步更新变为 异步可中断更新

主要机制是:React 与 浏览器做了一个约定,浏览器将自己 一帧中的部分时间预留给 React,

React 利用这部分预留时间来完成自己的工作,如果某一个工作需要的时间特别长,超出了预留的时间,React 会中断自己的工作,并将执行权交给浏览器,等待下一帧预留的时间到来以后,再继续执行之前被中断的工作,这样浏览器在每一帧都会执行样式布局和样式绘制的工作,这样就会减少掉帧的可能性。所以采用异步更新的机制之后,即使是更新大量的节点这样的 CPU 密集型操作,React 也能有效的减少掉帧的可能性

解决 IO 瓶颈

在这里插入图片描述
在异步操作的时候(比如网络请求),如果有一个 loading 效果,那就会让用户明显的知道

这是一个异步操作,但是 如果延迟这个loading 效果的展示时间,从用户的感知操作来说,就和同步没有什么区别,这就是 将人机交互的结果融入到 UI 交互的例子

为了解决 IO 瓶颈,React 正从框架层面上来实现 异步可中断更新

参考资料:
react 官网
react 技术揭秘
react 官网的 issue 解答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再见 ETH India 2022 建设者们 让我们一起回顾这个美好的建设周

很难超越的1700名黑客马拉松比赛,但是以太坊社区出现并打破了ETH India 2022 的新记录。来自321个城市的2000名与会者在短短的一个周内构建并部署了多达459个项目到以太坊生态系统中。你可能错过了过去一周发生的一切,但幸运的是,我们收集了所…

智能设备带来全新体验,打造未来智能生活

随着科技的快速发展,我们的生活变得越来越智能化,近年来智能设备已经遍布我们生活的各个领域,推动了生产能力和质量,给人们的生活带来了极大的便利。智能设备的出现和发展是时代进步的必然产物,高效、安全、准确性高&a…

【蓝桥杯选拔赛真题50】Scratch小猫跑步 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch小猫跑步 一、题目要求 编程实现 二、案例分析 1、角色分析

mybatis写postgis原生sql需要加强转类型 以及 配置geometry类型转换

mybatis类型转换器处理PostGis数据库geometry类型转换_SomeOtherTime的博客-CSDN博客_java mybatis postgis 在navicate写insert into "district" (name,code,position) VALUES(cesh2i3,ac1v3,SRID4326;MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0))) 不会报错。 在mybat…

[附源码]计算机毕业设计高校学生信息采集系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

虹科案例 | 光热测厚技术助力PSA无底漆涂装方案

法国标致雪铁龙集团(PSA Peugeot Citron)最开始是生产胡椒研磨机,然后将其产品组合扩展到自行车等,现在已经是欧洲第二大汽车制造商。巴黎郊外的普瓦西(Poissy) 工厂安装了法国首个紧凑型水性喷漆工艺&…

漏洞预警| ThinkPHP多版本存在远程代码执行漏洞

棱镜七彩安全预警 近日网上有关于开源项目 ThinkPHP 存在远程代码执行漏洞,棱镜七彩威胁情报团队第一时间探测到,经分析研判,向全社会发起开源漏洞预警公告,提醒相关安全团队及时响应。 项目介绍 ThinkPHP是一个快速、兼容而且…

制定项目管理计划的10个步骤

一个协调完美、透明、时间表具体且准确的项目管理计划,将大大有助于你的项目按时完成。以下是制定项目计划的10个基本步骤。 第1步:与利益相关者讨论计划和关键部分 项目计划由活动文件组成,这些文件为所有直接或间接参与项目的人提供指导。…

如何开通股票接口中的StockQuoteRecord功能?

股票接口中的StockQuoteRecord,也就是十档行情快照,在传统的行情软件中只能看到委托数量,而无法知道这些数据是如何形成的。 下面看一下股票接口StockQuoteRecord(十档行情快照)的说明: 字段名 类型 备…

【数集项目之 MCDF】(三) 仲裁器 arbiter

接下来进行仲裁器 arbiter的设计。根据设计文档,我们知道从输入总共有3个通道,而这三个通道很有可能都接收到数据可以进行发送。而arbiter就是综合优先级、是否有包可以发送等因素,选择一个通道来进行发送。形象的可以将arbiter比喻成“一个多…

FineReport可视化数据分析-图表对象属性

1.概述 1.1 单个系列对象属性 属性 类型 说明 this.points Array 当前系列的所有数据点 this.name String 当前系列的名字,跟图例显示的系列名一致 this.type String 当前系列的图表类型,目前包括的类型如下图所示: 1.2 单个数…

图解TCP_IP 第5版

图解TCP_IP 第5版1.7.1 面向有连接型与面向无连接型1.7.2 电路交换与分组交换1.7.3 单播、广播、多播和任播1.9.1 通信媒介1.9.1 传输速率、带宽和吞吐量1.9.2 网卡1.9.3 中继器与集线器1.9.4 网桥/2 层交换机1.9.5 路由器/3层交换机1.9.6 4~7 层交换机1.9.7 网关2.2.1 TCP/IP …

matplotlib安装及使用

目录 1、Matplotlib简介 2、Matplotlib安装 3、Matplotlib导入 4、Matplotlib基本应用 5、画图种类 5.1、Scatter散点图 5.2、条形图 5.3、等高线图 5.4、Image图片 5.5、3D图像 6、多图合并显示 6.1、Subplot多合一显示 6.2、SubPlot分格显示 6.3、图中图 6.4、…

保护大数据安全的十大行为准则

大数据安全是指在存储、处理和分析过于庞大和复杂的数据集时,采用任何措施来保护数据免受恶意活动的侵害,传统数据库应用程序无法处理这些数据集。大数据可以混合结构化格式(组织成包含数字、日期等的行和列)或非结构化格式(社交媒体数据、PDF 文件、电子…

YourKit Java Profiler 命令行工具自动弹出

YourKit Java Profiler 命令行工具自动弹出 识别处理器和内存从来都不容易。 YourKit为程序开发了两个阶段的开发和开发革命。 YourKit Java Profiler软件的功能和特点: 以任何方式为团队和公司在开发、测试和生产中,以不同的操作系统、本地和远程方式指…

Python多项分布随机数的生成

文章目录二项分布多项分布函数概率密度函数(PDF)备注binomial(n, p)P(k)(nk)pk(1−p)n−kP(k) \binom{n}{k}p^k(1-p)^{n-k}P(k)(kn​)pk(1−p)n−k二项分布poisson([lam])f(k)λke−λk!f(k)\frac{\lambda^ke^{-\lambda}}{k!}f(k)k!λke−λ​泊松分布multinomial(n, pvals)多…

解放双手!推荐一款阿里开源的低代码工具,YYDS!

之前分享过一些低代码相关的文章,发现大家还是比较感兴趣的。之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过!最近体…

AIOps是什么?为什么用它?

由于快速的数字化转型给 IT 企业组织带来了很大的压力,要求他们更加主动和敏捷,DevOps 原则和实践一直是宝贵的资源。但是,为了保持领先地位,企业需要更强大的解决方案。那么,答案是什么?当然是 AIOps&…

现在ChatGPT可以使用谷歌插件进行快速交互访问了!

文章目录前言效果原理部署过程获得ChatGPT session token克隆代码库设置ChatGPT session token项目安装启动项目谷歌浏览器安装插件报错问题前言 这个ChatGPT虽然功能很强大,但是使用的时候每次都得去打开对应的网站,把自己想问的问题复制过去&#xff…

简易Qt图片查看器

本篇使用Qt来实现一个可以查看任意目录下图片的图片查看器,可以电脑中任意目录下图片的查看,并且可以通过鼠标滚轮以及鼠标移动来实现图片的灵活放大、缩小,此外,在打开一个图片后,若该目录下还有其它图片,…