如何对 React 函数式组件进行优化

taoweng 2019-11-20 原文

如何对 React 函数式组件进行优化

文章首发个人博客

前言

目的

本文只介绍函数式组件特有的性能优化方式,类组件和函数式组件都有的不介绍,比如 key 的使用。另外本文不详细的介绍 API 的使用,后面也许会写,其实想用好 hooks 还是蛮难的。

面向读者

有过 React 函数式组件的实践,并且对 hooks 有过实践,对 useState、useCallback、useMemo API 至少看过文档,如果你有过对类组件的性能优化经历,那么这篇文章会让你有种熟悉的感觉。

React 性能优化思路

我觉得React 性能优化的理念的主要方向就是这两个:

  1. 减少重新 render 的次数。因为在 React 里最重(花时间最长)的一块就是 reconction(简单的可以理解为 diff),如果不 render,就不会 reconction。

  2. 减少计算的量。主要是减少重复计算,对于函数式组件来说,每次 render 都会重新从头开始执行函数调用。

在使用类组件的时候,使用的 React 优化 API 主要是:shouldComponentUpdatePureComponent,这两个 API 所提供的解决思路都是为了减少重新 render 的次数,主要是减少父组件更新而子组件也更新的情况,虽然也可以在 state 更新的时候阻止当前组件渲染,如果要这么做的话,证明你这个属性不适合作为 state,而应该作为静态属性或者放在 class 外面作为一个简单的变量 。

但是在函数式组件里面没有声明周期也没有类,那如何来做性能优化呢?

React.memo

首先要介绍的就是 React.memo,这个 API 可以说是对标类组件里面的 PureComponent,这是可以减少重新 render 的次数的。

可能产生性能问题的例子

举个

版权声明:本文为taoweng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/taoweng/p/11897040.html

如何对 React 函数式组件进行优化的更多相关文章

  1. React(v16.8.4)生命周期详解

    当前版本v16.8.4 装载过程(组件第一次在DOM树中渲染的过程): constructor(常用) -&g […]...

  2. react使用create-react-app创建的项目部署

    一、在所有的项目代码编写完成后,react项目直接部署是无法正常访问的     1、问题一           […]...

  3. React学习及实例开发(二)——用Ant Design写一个简单页面

    本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一、引入Ant De […]...

  4. vue

    一、包容性路由与排他性路由 1、包容性路由。多个<Route> 可以同时进行匹配和渲染,例如:如果 […]...

  5. React 深入系列3:Props 和 State

    文:徐超,《React进阶之路》作者 授权发布,转载请注明作者及出处 React 深入系列3:Props 和 […]...

  6. react项目使用bootstrap

    曾经对于react项目怎么使用bootstrap纠结了很久,网上也查了好多的资料,有的用react-boots […]...

  7. 【Web前端Talk】React-loadable 进行代码分割的基本使用

    随着项目功能的扩充、版本迭代,我们与Webpack捆绑起来的的项目越来越大,大到开始影响加载速度了。这时我们就 […]...

  8. React16.x特性剪辑

    本文整理了 React 16.x 出现的耳目一新的概念与 api 以及应用场景。 更多 React 系列文章可 […]...

随机推荐

  1. 八、Java数组

    Java数组 数组概述 相同类型数据的有序集合 按先后次序排列组合 每一个数据都可称作数组元素,每个数组元素可 […]...

  2. 前人总结的一些软件开发规范

    为了提高软件开发质量,降低开发周期,增强代码的可重用性和易读性,使软件便于维护,开发人员间便于交流和协作,特总 […]...

  3. unreal engine4效果很不错

    unreal engine4效果很不错 http://blog.csdn.net/garuda/article […]...

  4. 剖析虚幻渲染体系(06)- UE5特辑Part 1(特性和Nanite)

    目录 6.1 本篇概述 6.1.1 本篇内容 6.1.2 基础概念 6.2 UE5新特性 6.2.1 UE5编 […]...

  5. 2020 年度编程语言排行榜出炉!C 语言称霸,Java 遭遇滑铁卢…….

    最近,TIOBE 发布了过去一年的编程语言排行榜: 数据来源TIOBE: https://www.tiobe. […]...

  6. Adobe Acrobat Pro DC 2019&2020激活方法

    2019还是使用的amtemu.v0.9.2-painter.exe,但是要先改注册表 http://tieb […]...

  7. MIT线性代数公开课学习笔记第26~30课

    二十六、对称矩阵及正定性 实对称矩阵 实对称矩阵是所有元素均为实数的对称矩阵。具有以下性质: 1、所有特征值均 […]...

  8. 关于IE8不支持placeholder完美解决方案,不需要任何插件

    关于IE8不支持placeholder完美解决方案,不需要任何插件   最近有好多人咨询我IE8不支持plac […]...

展开目录

目录导航