想象一下这种场景,一个父组件下面一大堆子组件。然后呢,这个父组件re-render。是不是下面的子组件都得跟着re-render。可是很多子组件里面是冤枉的啊!!很多子组件的props 和 state 然而并没有改变啊!!虽然virtual dom 的diff 算法很快。。但是性能也不是这么浪费的啊!!

class Child  extends Component {render() {console.log("我re-render了");const {name,age} = this.props;return (<div><span>姓名:</span><span>{name}</span><span> age:</span><span>{age}</span></div>)}
}
const Person = pureRender(Child);

pureRender其实就是一个函数,接受一个Component。把这个Component搞一搞,返回一个Component看他pureRender的源代码就一目了然

function shouldComponentUpdate(nextProps, nextState) {return shallowCompare(this, nextProps, nextState);
}function pureRende(component) {component.prototype.shouldComponentUpdate = shouldComponentUpdate;
}
module.exports = pureRender;

pureRender很简单,就是把传进来的component的shouldComponentUpdate给重写掉了,原来的shouldComponentUpdate,无论怎样都是return ture,现在不了,我要用shallowCompare比一比,shallowCompare代码及其简单,如下

function shallowCompare(instance, nextProps, nextState) {return !shallowEqual(instance.props, nextProps) || !shallowEqual(instance.state, nextState);
}

一目了然。分别拿现在props&state和要传进来的props&state,用shallowEqual比一比,要是props&state都一样的话,就return false

转载于:https://www.cnblogs.com/crazycode2/p/9086659.html

子组件跟随父组件re-render相关推荐

  1. react 子传参父_React 子组件给父组件传值、整个组件、方法

    一.准备工作 1.定义一个父组件,名字为Parent /src/component/Parent.js import React, {Component} from 'react' export de ...

  2. react typescript 子组件调用父组件

    //父组件 import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport &q ...

  3. react 子传参父_React 子组件向父组件传值的方法

    本文介绍了React 子组件向父组件传值的方法,分享给大家 子组件需要控制自己的 state, 然后告诉父组件自己的state,通过props调用父组件中用来控制state的函数,在父组件中展示子组件 ...

  4. react 子组件回调父组件函数

    其实就是父组件将父组件的函数(key:changeState,value:goToBPMS函数)传递给子组件,子组件从props中调用key为changeState的函数,父组件的goToBPMS函数 ...

  5. 子组件向父组件传参的几种方法

    子组件向父组件传参的几种方法 在用vue框架写项目的时候,多多少少会遇到子组件向父组件传参的方法.作为一个新手,确实让人头疼,于是便有了这篇小白写的总结,话不多说,开始! 以下方法全部基于这两个父子组 ...

  6. P13: * Component组件拆分、子组件向父组件传递数据

    React16 基础 阐述 新建服务菜单组件 父组件向子组件传值 子组件向父组件传递数据 warning警告 获取数组索引下标 子组件调用父组件方法 预览最终效果 index.js Xiaojieji ...

  7. react基础之--子组件向父组件传值

    在父组件中定义一个函数,该函数用于处理传递过来得值(比如用于修改父组件中state得数据) 在子组件调用部分通过属性绑定得形式绑定该函数(在子组件中就可以通过this.props.属性名就可以拿到该函 ...

  8. react子组件向父组件传值

    思想: 子组件往父组件传值,父组件中定义一个函数,在子组件中触发,触发的时候子组件把需要传递的数据当作参数传递过去,即可 1.父组件提供一个回调函数(其参数用于接受数据) 2.将函数作为属性的值,利用 ...

  9. 【react】子组件向父组件传值

    相信已经接触react的同学们,对父子间传值已经不陌生了,但是相对来说,父组件向子组件传值很简单,直接在 子组件的标签上传过去,再从子组件的props上结构出来就ok了,但是很多同学还是理解不了如何由 ...

最新文章

  1. 基于PLSQL的数据库备份方法及如何解决导出clob和blob类型数据报错的问题
  2. 居然还有这种游戏...是不是有点刺激过头了啊...
  3. Java-GUI编程实战之管理系统 Day2【Swing(组件介绍、布局管理器、事件类及监听器类)、基础组件按钮和输入框的用法】
  4. NetworkComms V3 之支持TCP连接和UDP连接
  5. 那个分分钟处理 10 亿节点图计算的 Plato,现在怎么样了?
  6. tensorflow机器学习实战指南 源代码_小小白TensorFlow机器学习实战基础
  7. Audio PCM输出流程(三十三)
  8. poj 1637 Sightseeing tour —— 最大流+欧拉回路
  9. 【图像融合】基于matlab GUI小波变换彩色图像融合(带面板)【含Matlab源码 782期】
  10. python大数据论文_大数据环境下基于python的网络爬虫技术
  11. 使用Python下载电视剧(二):下载ts片段
  12. 谷歌搜索表单参数url参数详解
  13. 神秘美女接机刘谦 曝刘谦女友酷似舒淇身家过亿
  14. TARS 斩获 2018 年最佳原创开源软件奖
  15. Windows Server 2022 开始,DNS 客户端支持 DNS over-HTTPS (DoH)
  16. 一次小米路由器3刷机的翻车记录
  17. 学习数学建模算法与应用【数据预处理】
  18. 设计小白也能上手的软件有哪些?
  19. 2022河海大学物联网工程学院电子信息(计算机与软件方向)890上岸经验帖(毕业2年后,双非三跨211成功)
  20. 智慧建造管理平台施工现场视频监控系统

热门文章

  1. 第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 3...
  2. C#正则表达式匹配字符串中的数字
  3. 白鸦三次创业反思:公司遇问题 怎么走都对(转)
  4. rancher中级(二)(rancher中添加证书及操作虚拟主机)
  5. React之渲染元素
  6. php 自动发送邮件的实现
  7. 【分布式事务系列九】聊聊分布式事务
  8. Gulp 自动化的项目构建工具
  9. 在不同域中各个系统拥有自已独立的用户系统时的单点登录问题
  10. Puppeteer爬虫初探