如何对 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. 利用js判断文件是否为utf-8编码

    常规方案 使用FileReader以utf-8格式读取文件,根据文件内容是否包含乱码字符�,来判断文件是否为u […]...

  2. React Native学习(六)—— 轮播图

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的。Git […]...

  3. 手把手教你全家桶之React(三)–完结篇

    前言 本篇主要是讲一些全家桶的优化与完善,基础功能上一篇已经讲得差不多了。直接开始: Source Maps […]...

  4. create-react-app不暴露配置设置proxy代理

    此方法可以在不暴露配置的情况下直接设置代理,非常便捷 在package.json里添加 “prox […]...

  5. react入门到进阶(二)

    一、react属性与事件 1、State属性 State,翻译过来是状态的意思,所以它就代表着组件的状态。Re […]...

  6. react-入门

    基础认识 官网 特点 声明式编程 组件化 支持客户端和服务端渲染 高效 虚拟DOM,不总是直接操作DOM,只是 […]...

  7. react系列教程

    这个系列将从基础语法讲起,把react全家桶都讲到,然后到具体的使用,最后完成后,会写一个完整的demo。 前 […]...

  8. React学习及实例开发(三)——用react-router跳转页面

    本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一、定义路由 1、安 […]...

随机推荐

  1. 系统学习 Java IO (一)—-输入流和输出流 InputStream/OutputStream

    目录:系统学习 Java IO —- 目录,概览 InputStream 是Java IO API […]...

  2. 基于opencv的小波变换 – Homography Matrix

    基于opencv的小波变换 提供函数DWT()和IDWT(),前者完成任意层次的小波变换,后者完成任意层次的小 […]...

  3. 大数据平台的搭建思路 – dongtime

    大数据平台的搭建思路 做任何事情都要有目标,然后根据这个目标根据自身的条件和外部的情况制定一个思路,这个思路也 […]...

  4. 五道逻辑思维题

    文章首发于微信公众号:几何思维 问题1 1.1 问题描述 从1到100排列成一排,总共100个数,每一轮抽走奇 […]...

  5. 留言区

    ...

  6. outlook2013 更改邮件文件位置

    找了许多也是不行, 最后自己来多次试验,原来就是这么容易 。, 1: 先增加你的邮件账号,然后找到数据文件的位 […]...

  7. 浏览器劫持处理

    百度这公司完全没有节操,玩小手段溜溜的,玩电脑的99%都被hao123劫持过,随便在网上下点什么破解的东西就可 […]...

  8. 【故障公告】博客系统升级到 .NET 5.0 引发的故障

    昨天晚上我们将博客系统从 .NET Core 3.1 升级到了 .NET 5.0 ,本来是一次很有信心的升级, […]...

展开目录

目录导航