1. Component存在的问题?
    1). 父组件重新render(), 当前组件也会重新执行render(), 即使没有任何变化
    2). 当前组件setState(), 重新执行render(), 即使state没有任何变化
  2. 解决Component存在的问题
    1). 原因: 组件的componentShouldUpdate()默认返回true, 即使数据没有变化render()都会重新执行
    2). 办法1: 重写shouldComponentUpdate(), 判断如果数据有变化返回true, 否则返回false
    3). 办法2: 使用PureComponent代替Component
    4). 说明: 一般都使用PureComponent来优化组件性能
  3. PureComponent的基本原理
    1). 重写实现shouldComponentUpdate()
    2). 对组件的新/旧state和props中的数据进行浅比较, 如果都没有变化, 返回false, 否则返回true
    3). 一旦componentShouldUpdate()返回false不再执行用于更新的render()
  4. 面试题:
    组件的哪个生命周期勾子能实现组件优化?
    PureComponent的原理?
    区别Component与PureComponent?

react中component存在性能问题的更多相关文章

  1. react第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制)

    第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制) 课程目标 深入理解和掌握事件的冒泡及捕获机制 理解react中的合成事件的本质 在react组件中合理的使用原生事件 ...

  2. React 中的 Component、PureComponent、无状态组件 之间的比较

    React 中的 Component.PureComponent.无状态组件之间的比较 table th:first-of-type { width: 150px; } 组件类型 说明 React.c ...

  3. React Native 中 component 生命周期

    React Native 中 component 生命周期 转自 csdn 子墨博客  http://blog.csdn.net/ElinaVampire/article/details/518136 ...

  4. Immutable 详解及 React 中实践

    本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...

  5. React中Props 和 State用法

    React中Props 和 State用法 1.本质 一句话概括,props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下 ...

  6. 深入理解react中的虚拟DOM、diff算法

    文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 React中的虚拟DOM与Vue中的虚拟DOM比较 React中的虚拟DOM是什么?   ...

  7. React中的高阶组件,无状态组件,PureComponent

    1. 高阶组件 React中的高阶组件是一个函数,不是一个组件. 函数的入参有一个React组件和一些参数,返回值是一个包装后的React组件.相当于将输入的React组件进行了一些增强.React的 ...

  8. React中静态类型校验 - PropTypes

    1.基本说明PropTypes定义为组件类自身的属性,用以定义prop的类型.在开发模式下,当提供一个不合法的值作为prop时,控制台会出现警告: 在产品模式下,为了性能考虑应忽略propTypes ...

  9. 【React】393 深入了解React 渲染原理及性能优化

    如今的前端,框架横行,出去面试问到框架是常有的事. 我比较常用React, 这里就写了一篇 React 基础原理的内容, 面试基本上也就问这些, 分享给大家. React 是什么 React是一个专注 ...

随机推荐

  1. css3 扇形动画

    扇形动画,因为我工作中遇到了只执行一次就ok,所以没细研究,该css暂时只能执行1次扇形动画,无限循环会有问题. css: @keyframes rotateAn{ 0%{transform: rot ...

  2. 获取BGR颜色的HSV值

    import cv2import numpy as np green = np.uint8([[[152, 245, 255]]]) # 输入待转换颜色的BGR值hsv_green = cv2.cvt ...

  3. Linux下使用telnet测试端口号是否开放

    telnet 127.0.0.1 80调用后,若提示bash: telnet: command not found,那么进行以下步骤: 1.检查telnet是否已经安装,或者有部分未安装: rpm - ...

  4. (转载)了解Android 4.1,之三:黄油项目 —— 运作机理及新鲜玩意

    Welcome back to GTKA, everyone's favorite investigative series where we learn all about the newest v ...

  5. vue项目,百度地图api高亮选取区域,高亮某个地区,行政区域等

    效果如下: var blist = [] ,maxZoom: });// 创建地图实例 var point = new window.BMap.Point(89.48,31.57); map.cent ...

  6. 一个关于STL list使用 小示例

    #include <list> #include <string> using namespace std; typedef struct DiskInfo_st { int ...

  7. 汇编call jmp理解

    CALL   指令在实现转移之前,   要将返回地址存入堆栈的,   以便子程可以通过   ret   指令返回到   CALL   指令下面的指令接着运行;   jmp   就没用这些事儿,   直 ...

  8. 交换机配置——Cisco(思科)-交换机初始化配置

    一.实验目的:完成一台交换机的初始化配置,并且可以用telnet登录 二.拓扑图如下: 三.实验步骤 1.创建一台交换机(S1)和一台主机(PC1) 2.先给PC1主机设置IP地址: 3.S1配置: ...

  9. 51 Nod 1163 最高的奖励

    1163 最高的奖励  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成 ...

  10. LOJ #2734 Luogu P3615 [JOI2016春季合宿]Toilets (结论、贪心)

    题目链接 (loj) https://loj.ac/problem/2734 (luogu) https://www.luogu.org/problem/P3615 题解 嗯,考场上肝了\(3h\)然 ...