美文网首页React
react 类组件中减少重复渲染

react 类组件中减少重复渲染

作者: 头发飘逸 | 来源:发表于2021-10-17 21:34 被阅读0次

前言:

在react开发中,经常会遇到组件重复渲染的问题,父组件一个state的变化,就会导致以该组件的所有子组件都重写render,尽管绝大多数子组件的props没有变化

render什么时候会触发

首先,先上一张react生命周期图:


image.png

这张图将react的生命周期分为了三个阶段:生成期、存在期、销毁期,这样在create、props、state、unMount状态变化时我们可以清楚的看到reacte触发了哪些生命周期钩子以及什么时候会render。

如果我们需要更改root的一个state,使绿色组件视图更改


image.png

如果你写过vue,你会发现组件更新是如上图那样的(视图指令已编译为修改视图的函数存放在绑定的state里的属性里,所以能够做到靶向修改),而react会以组件为根,重新渲染整个组件子树,如下图(绿色是期望的render路径,橙色是无用render):


image.png

所以在react里,我们探讨的render性能优化是react调用render的路径如下:

image.png

如何避免这些不必要的render:

shouldComponentUpdate

shouldComponentUpdate(nextProps, nextState)

使用shouldComponentUpdate()以让React知道当前状态或属性的改变是否不影响组件的输出,默认返回ture,返回false时不会重写render,而且该方法并不会在初始化渲染或当使用forceUpdate()时被调用,我们要做的只是这样:

shouldComponentUpdate(nextProps, nextState) {
  return nextState.someData !== this.state.someData
}

相关文章

  • react 类组件中减少重复渲染

    前言: 在react开发中,经常会遇到组件重复渲染的问题,父组件一个state的变化,就会导致以该组件的所有子组件...

  • React 组件性能优化

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

  • react-native中统计组件渲染次数

    性能优化的很大一个点就是避免组件重复渲染。在react中有很多统计组件重复渲染的工具,但是react-native...

  • 第 006 期 React 运行时性能优化之减少渲染组件的次数

    减少组件的渲染次数,能提升 React App 的运行时性能。通过写法的优化,可以减少不必要的组件渲染次数。 优化...

  • React中hooks之useCallback搭配memo

    React.memo类似于React.PureComponent,能对props做浅比较,防止组件无效的重复渲染 ...

  • PureComponent的使用指南

    前言 React在15.3版本以后出现了PureComponent组件,作用是减少继承该组件的组件渲染的次数从而达...

  • 高阶组件

    React 高阶组件HOC (Higher-Order Component) 高阶组件是react中重复使用组件逻...

  • 关于React组件

    渲染React组件 通过ReactDOM直接渲染 通过React.Component创建组件再通过ReactDOM...

  • 使用immutable优化React

    React在减少重复渲染方面确实是有一套独特的处理办法,那就是虚拟DOM,但显然在首次渲染的时候React绝无可能...

  • React Hooks

    前言 React中组件分为两大类:Class类式组件、函数式组件 React v16.8以前: Class类式组件...

网友评论

    本文标题:react 类组件中减少重复渲染

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