美文网首页web前端
React的性能优化

React的性能优化

作者: 一颗冰淇淋 | 来源:发表于2021-03-17 19:00 被阅读0次

React的更新流程如下,我们可以有两种优化角度
1、props/state变化--->render函数变化这个阶段,减少render的执行次数
2、新旧DOM树进行diff--->计算出差异进行更新,减少差异的内容

react更新机制.png

一、减少render的执行次数
1、类式组件
(1) shouldComponentUpdate
当props或者state更新时,render函数就会重新执行,此时我们可以通过生命周期 shouldComponentUpdate来控制是否需要render重新执行,当不写这个生命周期时,React内部决定render是否变化的函数就会返回true,即默认每次都更新。

state = { count: 0 }
shouldComponentUpdate(nextProps, nextState){
   if(nextProps.count === this.state.count){
       return false
   }
  return true 
}     

(2) PureComponent
自己去监控每一个state或者props会有比较大的工作量,这时候可以使组件继承自PureComponent,PureComponent内部重写了shouldComponentUpdate这个生命周期方法,它对state和props进行了一个浅比较

export default class Count extends React.PureComponent {}

2、函数式组件
使用memo高阶组件,也是将数据进行了一个浅比较

function myComponent(){}
export default React.memo(myComponent)

二、减少差异
虚拟DOM的diff算法中为了提高性能,只对每一层进行比较,不会跨层比较,有key的时候会比对相同的key,没有key时内容不同就直接替换,当我们进行逆序增加数据时,没有唯一的key,会导致相同的数据每次都会重新渲染

<ul>
   <li>千与千寻的神隐</li>
   <li>龙猫</li>
   <li>侧耳倾听</li>
<ul>

<ul>
   <li>起风了</li>    
   <li>千与千寻的神隐</li>
   <li>龙猫</li>
   <li>侧耳倾听</li>
<ul>

实际上这组数据只新增了一个内容,但是没有key的话,会同级之间比较,发现每一层都不相同,所以都会重新渲染成新的DOM节点,

key的设置也需要注意,不要用索引值,要用每个元素的唯一id,因为索引值会根据遍历的数据变化,就发生以下情况

<ul>
    <li key="1">千与千寻的神隐</li>
    <li key="2">龙猫</li>
    <li key="3">侧耳倾听</li>
<ul>

<ul>
     <li key="1">起风了</li>    
     <li key="2">千与千寻的神隐</li>
     <li key="3">龙猫</li>
     <li key="4">侧耳倾听</li>
<ul>

这样实际上即使定义了key,当数据更新时,同一个值会有不同的key,进行比较时,找到同样的key进行比较后发现内容不同,这样会增加大量不必要的重新渲染

综上,我们可以通过使用PureComponent、memo以及设置key值来对React性能进行优化

相关文章

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

  • 深入浅出React和Redux学习笔记(五)

    React组建的性能优化 性能优化的方法: 单个React组件的性能优化; 多个React组件的性能优化; 利用r...

  • Redux源码剖析

    前面写了《React组件性能优化》《Redux性能优化》《React-Redux性能优化》,但是都没有从这些框架的...

  • react性能优化

    React 性能优化 React 性能优化 | 包括原理、技巧、Demo、工具使用[https://juejin....

  • React-Redux性能优化

    前面写了两篇文章《React组件性能优化》《Redux性能优化》,分别针对React和Redux在使用上的性能优化...

  • React 组件性能优化

    React 组件性能优化最佳实践 React 组件性能优化的核心是减少渲染真实 DOM 节点的频率,减少 Virt...

  • 05|React组件的性能优化

    本文主要是针对性能优化做介绍,对应的React本身性能就比较不错!要介绍的点如下: 单个React组件的性能优化 ...

  • React 性能优化

    React 性能优化 简单的 todo-list-demo 讲 React 性能优化不能光靠嘴说,得有一个 dem...

  • React性能优化方案

    React 性能优化 简单的 todo-list-demo 讲 React 性能优化不能光靠嘴说,得有一个 dem...

  • react 框架性能优化

    react 框架性能优化 前端性能监控利器 1.Google Performance工具 2.react 性能查看...

网友评论

    本文标题:React的性能优化

    本文链接:https://www.haomeiwen.com/subject/stiecltx.html