React优化手段

Anolis龙蜥内核升级实战:从查询到配置的全流程指南 本文提供了一份详尽的Anolis龙蜥操作系统内核升级实战指南。文章从升级的必要性出发,逐步讲解了升级前的系统检查与备份、从官方源获取正确内核包、分步安装与验证、配置默认启动项以及升级后的功能验证与安全回滚方案。旨在帮助运维人员安全、平稳地完成内核升级,以获取性能提升、新硬件支持及重要的安全漏洞修复。 阅读详情

1 优化原则

不要过早对项目进行优化
切勿浪费精力在对整体性能提高的不多的代码上
对于关键的性能点尽早优化

react使用虚拟dom树提高性能,每次渲染并非抛弃所有重新渲染,而是借助虚拟dom计算dom树的最小修改

优化点:在计算前就判定是否需要去重新渲染

2 常用手段

使用shouldComponentUpdate来判定是否需要重新渲染是最常用的手段

2.1 单个React组件优化

  1. 在构造函数中绑定this
    对于回调函数有三种方法进行绑定:构造中、render中、箭头函数,三种方法中只有构造函数是只执行一次的(箭头函数也可以)。尽量少在render中绑定回调,因为每次绑定,对于被绑定的组件来说,传入的回调函数都是一个新对象,都会造成子组件重新渲染。
// render中绑定回调,当父组件重新渲染时,子组件一定会重新渲染
...
render(){
  return <A onClick={()=>{console.log(1)}} />
}
...
  1. render中的参数尽量使用同一对象
    由于react判定是否需要重新渲染,是通过浅层比较(地址比较)来判断的,对于值类型的变量来说没什么问题,对于引用类型的来说需要确保每次都是传入的原来的对象,否则造成性能浪费,如:
<Foo style={{color: 'red'}} />

传入的是一个对象,而每次render时该对象都是一个新的对象,会被react认为Foo组件的props每次render均发生变化,建议使用:

const fooStyle = {color: 'red'}
<Foo style={fooStyle} />
  1. 列表数据使用单独组建进行渲染
    由于列表元素渲染非常耗时,即使列表元素未发生改变,react在比较新旧列表元素时依然需要花费大量时间,建议将列表元素包装为一个组件进行单独渲染
// 新旧比较花费大量时间
{x.map(item=><p>item</p>)}
// 包装成组件后
<X content={x}/>
const X = props => <div>{props.content.map(item=><p>item</p>)}</div>

2.2 shouldComponentUpdate解析

react默认每次更新都会调用所有的生命周期函数,所以如果没有重写该周期函数,默认是直接返回true

react渲染规则:
在这里插入图片描述
从React组件的根节点开始依次按照该规则进行检查

  1. 当前节点检查scu为true,则会进行vDOMEq比较,如果比较结果为一致就停止更新,否则向下进行遍历
  2. 当前节点检查scu为false,直接停止该节点更新

起始相当于双保险:一个是scu的true和false,另一个是vDOMEq的true和false,任一为false,都会让该节点不更新,只有两个都为true才会更新该节点

2.3 PureComponent

由于大多数情况下只需要对比state和props来判断是否需要更新,所以PureComponent类实现了自己的更新方法,自动的浅比较state和props来判断是否需要更新

特别注意:对于state或props中包含引用数据类型的无法判断是否被改变了!!
如:

import React, { PureComponent } from 'react'
class MyTest2 extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      arr: []
    }
  }
  add1 = () => {
    let arr = this.state.arr
    arr.push(1)
    this.setState({ arr })
  }
  // shouldComponentUpdate() {

  // }
  render() {
    console.log('update')
    return (
      <div>{this.state.arr.length}<button onClick={this.add1}>click2</button></div>
    );
  }
}

export default MyTest2;

该组件单击后无任何变化,虽然state中的arr已经被改变了,但是页面不会被重新渲染

2.4 使用immutable(ImmutableJS)

待补充

3 其他优化点

  1. 慎用展开语法{...this.props},该语法会创建一个新对象,同时传递很多当前组件不需要的参数
  2. 在构造中进行函数this绑定
  3. 复杂页面尽量拆分
  4. 对于不变的展示组件使用const element
  5. map必须要添加key
  6. props和state尽量扁平化
  7. 使用return null来控制组件的显隐,而不是css的display:none
  8. 对于mobx+react来说,尽可能晚的解引用,能防止引用的属性变化导致父组件重渲染,进而自组建重渲染(由于mobx会观测当前组件可观测属性的变化,解引用早了,该引用变化会引起当前组件重渲染,并可能引起子组件重渲染)
// personStore中的name发生变化
// 早解引用
<A a={personStore.name}/>
// 晚解引用
<A a={personStore}/>
Java对接(BSC)币安链 | BNB与BEP20的开发实践(三)水龙头 WEB3 这一节我们讲一个币安测试链如何获取到BNB、USDT等BEP20数字货币(水龙头)来让我们前期测试开发。如图:我们将创建的地址填入相应输入框,来获取到测试BNB以及其他BEP20数字币。发币可能需要交易等待,请耐心等待即可,交易完成后,币会到达您的地址内。上一节我们用代码来实现BNB转账、BEP20转账、链上交易监控。2.MetaMask(小狐狸)浏览器插件 🪜。使用EDGE浏览器可以在浏览器直接打开。使用Chrome浏览器,请使用🪜打开。基本工作就绪后,即可进行开发测试。3. 测试区块链浏览器 🪜。 阅读详情

相关推荐

算法之动态规划(DP)求解完全背包问题

算法之动态规划(DP)求解01背包问题 上面这篇文章主要讲解了01背包问题和动态规划算法,如果你不了解动态规划算法,建议先浏览一下这篇文章熟悉一下,因为,本文的算法思想是基于这篇文章的。 1、什么是完全背包问题? **01背包问题:**有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品只能取1次放入背包中,背包所有物品权重和最大是多少? 完全背包: 有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品可以取无限次放入背包中,背包所有物品权重和

PRML_MAN的博客 2万+

21 个 React 性能优化技巧

React 为高性能应用设计提供了许多优化方案,本文列举了其中的一些最佳实践。 在以下场景中,父组件和子组件通常会重新渲染: 在同一组件或父组件中调用 setState 时。 从父级收到的“props”的值发生变化。 调用组件中的 forceUpdate。 下面是提升 React 应用性能的 21 个技巧。 1. 使用纯组件 如果 React 组件为相同的状态和 props 渲染相同的输出,则可以将其视为纯组件。 对于像 this 的类组件来说,React 提供了 PureComponent 基类。扩展 R

weixin_43484007的博客 5693

基于STM32的简易电压、频率、占空比测量仪

任务详解:我们需要实现三个功能: 第一个是测频率的功能,输入信号为频率为1kHz~10kHz的三种波形(方波、三角波、正弦波),这也是我们最常见的三种波形。幅度是不需要测量的,所以先不关心幅度。 第二个是电压报警功能,当输入信号的幅度超过15V时,我们需要报警(这里我用了一个红色LED当报警器,有条件的还可以加个蜂鸣器)并且把此时的信号幅度显示在OLED屏幕上。 第三个是通信方式的要求,需要有串口通信功能。 第四个是计算占空比的任务,这个任务的输入是幅度为1V~10V、频率为20Hz ~1kHz的方波,需要

weixin_43469377的博客 7251

React性能优化的8种方式

react凭借和diff算法拥有高效的性能,除此之外也有很多其他的方法和技巧可以进一步提升react性能。一下几中方法有助于提升react性能,虽然不必一定要在项目中使用这些方法,但是我们有应该知道如何使用这些方法。

比鲁斯大人的博客 4531

量化交易python代码解析:从狙击手算法到最优限价算法

在金融市场的竞技场上,量化交易如同一位冷静的策略大师,它以数学模型为剑,以计算机程序为盾,精准出击,捕捉市场的微妙波动。本文将深入探讨五种核心量化交易算法:直接委托算法(DMA)、时间加权平均算法(TWAP)、冰山算法(Iceberg)、狙击手算法(Sniper)、条件委托算法(Stop)以及最优限价算法(BestLimit),揭开它们背后的运作机制与实战应用。

木头大左的博客 1886

家用扫地机器人研发技术路线-第四部分:如何一步步做出来 | 4阶段 · 从原型到量产

摘要:本文详细介绍了扫地机器人从原型到量产的研发流程,分为4个关键阶段。首先聚焦四大技术难点:SLAM定位、AI视觉识别、仿生机械臂和静音风机系统。研发过程包括实验室原型验证、工程样机测试、小批量真实场景测试和量产导入四个阶段,每个阶段设有严格评审标准。特别强调测试贯穿全程,包括模块单元测试、整机集成测试、长期可靠性测试和多样化场景模拟,确保产品在上市前完成数百次真实环境验证。整个流程体现了从技术攻关到产品落地的系统性工程思维。

智能硬件研发,欢迎交流 191

【React】react 性能优化的方式有哪些

react凭借virtual DOM和diff算法拥有高效的性能,除此之外也有很多其他的方法和技巧可以进一步提升react性能。一下几中方法有助于提升react性能,虽然不必一定要在项目中使用这些方法,但是我们有应该知道如何使用这些方法。

Eliaukoyx 1954

游戏大厂技术护城河——为什么你抄不了原神?

│ │ │ │ ↓ 通过 │ │ │ │。│ │ │ │ ↓ 成功 │ │ │ │。│ │ │ │ ↓ 完成 │ │ │ │。│ │ │ │ ↓ 达标 │ │ │ │。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 71

十种React性能优化方式

对于纯展示的组件(没有内部状态或依赖),使用 PureComponent 或自定义的 shouldComponentUpdate 方法,可以避免不必要的重新渲染。对于那些不依赖于父组件传入的 props 的函数组件,可以使用 React.memo 进行包裹,减少不必要的重渲染。对于页面上不是首次加载就需要的组件,可以采用懒加载的方式,按需加载它们,减少初始渲染体积和提高首屏加载速度。这些是一些常见的 React 性能优化技巧,可以根据具体项目需求和场景灵活应用,以提升应用的性能和用户体验。

一个不掉头发的资深小白 2481

29、几何形态测量学在蝴蝶翅膀研究中的应用

本博客介绍了几何形态测量学在花斑木蛱蝶(Pararge aegeria)翅膀研究中的应用,探讨了环境因素对蝴蝶翅膀大小和形状的影响。通过选择合适的地标并采用Procrustes分析方法,研究揭示了不同景观类型下翅膀形状的差异及其潜在的适应性意义。文章还讨论了发育可塑性在飞行形态变异中的作用,并比较了几何形态测量学与其他传统方法的优势。最后提出了未来研究方向,包括多因素综合分析、发育机制探索及长期生态监测,为理解蝴蝶的适应性进化提供了重要线索。

ff678的博客 107

大数据平台符合信创(CDH国产化代替)详细方案(企业内部不外传方案)

信创旨在实现信息技术产业的自主可控,减少对外部技术的依赖,从而提升国家信息安全和经济发展的自主性。在此背景下,中国对信创提出了更高的要求,以期在激烈的市场竞争中占据有利地位。信创不仅关乎技术层面的创新,更涉及到产业链条的整合与优化。它要求从基础硬件、操作系统、数据库、中间件等各个层面实现国产替代,构建完整的信息技术生态体系。尤其是在做国企项目时,就有硬性要求使用符合信创(国产代替)。在信创背景下,符合要求的产品必须具备自主可控、安全可靠以及性能卓越等核心特点。

大模型大数据攻城狮的专栏 3510

React性能优化的手段有哪些?

3、使用shouldComponentUpdate或React.memo:使用shouldComponentUpdate方法或React.memo函数来避免不必要的组件渲染,只有在props或state发生改变时才会重新渲染组件。5、使用PureComponent或React.memo:使用PureComponent类或React.memo函数来避免不要的组件渲染,只有在props或state发生改变时才会重新渲染组件。

比鲁斯大人的博客 462

【100%通过率】华为OD机试真题 Java&Go 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

【React 】React 性能优化的手段有哪些?

代码层面工程层面框架机制层面通过这三个层面的优化结合,能够使基于react项目的性能更上一层楼。

qq_21087199的博客 2006

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

React-性能优化的手段

React-性能优化的手段

唯见青山不见君 1421

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

React 性能优化的手段有哪些?

通过上面初步学习,我们了解到react代码层面工程层面框架机制层面通过这三个层面的优化结合,能够使基于react项目的性能更上一层楼。

weixin_68911036的博客 219

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

react常用优化手段

渲染优化是核心:优先用React.memouseMemo避免无效重渲染,长列表用虚拟列表;加载优化提体验:路由懒加载、图片懒加载、资源预加载,减小首屏加载时间;打包优化减体积:分析包体积、按需引入依赖、替换大体积库,降低资源加载耗时;通用优化补细节:防抖节流、合理缓存、清理副作用,避免性能问题和内存泄漏。

qq_48795482的博客 958

react 常用优化手段

react 优化手段 性能优化: 优化

ZHXT__的博客 338

React有哪些性能优化的手段?

React性能优化手段

fly_fjy的博客 3543

前端基础知识React系列 - 30( React 性能优化的手段有哪些)

React性能优化主要从三个层面入手:代码层面建议避免内联函数、使用React Fragments、优化事件绑定方式、采用Immutable数据;工程层面推荐懒加载组件和服务端渲染,利用webpack代码拆分和React.lazy减少初始包大小;框架机制层面可通过shouldComponentUpdate、PureComponent和React.memo避免不必要的渲染。这三方面的优化手段结合使用,可显著提升React应用性能表现。

m0_67078501的博客 471

React性能优化的手段有哪些

3、如果是类组件,使用 shouldComponentUpdate(这是在重新渲染组件之前触发的其中一个生命周期事件)生命周期事件,可以利用此事件来决定何时需要重新渲染组件;2、使用 React.memo 进行组件记忆(React.memo 是一个高阶组件),对 于相同的输入,不重复执行;6、不要使用内联函数定义(如果我们使用内联函数,则每次调用“render”函数时都会创建一个新的函数实例);13、在函数组件中使用useCallback和useMemo来进行组件优化,依赖没有变化的话,不重复执行;

tang18533952786的博客 308

React有哪些优化性能的手段?

这些优化手段可以帮助开发者有效地提升 React 应用的性能表现,特别是在处理大规模数据、复杂交互和频繁更新的场景下尤为重要。

qq_35934966的博客 749

说说 React 性能优化的手段有哪些?

代码层面工程层面框架机制层面通过这三个层面的优化结合,能够使基于react项目的性能更上一层楼。

m0_65349389的博客 272

面试官:说说 React 性能优化的手段有哪些?

一、是什么React凭借virtual DOM和diff算法拥有高效的性能,但是某些情况下,性能明显可以进一步提高在前面文章中,我们了解到类组件通过调用setState方法, 就会导致re...

weixin_44475093的博客 754
上一篇: React之Component和PureComponent区别
下一篇: Vue2学习笔记2——B站
天落枫
博客等级 码龄10年 91粉丝 92原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值