React组件rerender的真正条件

  1. 当前组件的State中的属性改变时且当前组件的shouldcomponentupdate返回true,那么当前组件会rerender

  2. 组件的props中的任一属性的值有变化(即使这个任一属性的值是对象,变化的仅仅是该对象中的某属性的值,此刻也算props发生了变化)且当前组件的shouldcomponentupdate return true时且当期组件所有父级以上组件的shouldcomponentupdate return true,当前组件才会re-render

  3. 当前组件的shouldcomponentupdate即使返回false,当前组件里子组件若满足1中的条件,这个子组件依然会重新渲染

各个生命周期的深层含义

shouldComponentUpdate

触发时机1:

when new props(当props中某属性的值为对象时,该对象中某属性值发生了变化,也会触发该函数的调用) are being received且所有父级组件的shouldComponentUpdate得返回true当前组件才会触发该回调

触发时机2:

即使所有父级组件的shouldComponentUpdate返回false,当前组件的state有变化,当前组件的该回调依然会触发

默认值

Defaults to true. This method is not called for the initial render or when forceUpdate() is used

其他情况

if shouldComponentUpdate() returns false, then componentWillUpdate(), render(), and componentDidUpdate() will not be invoked

componentWillReceiveProps

触发时机1:

当当前组件的props某属性有变化时(包括这种情况:当props中某属性的值为对象时,该对象中某属性值发生了变化)且所有父级以上组件的shouldComponentUpdate返回true(当前组件的shouldComponentUpdate是否返回true不重要)时当前组件的该回调才会触发调用

触发时机2:

即使当前组件的shouldComponentUpdate return false且当前组件没有props的更新,父级组件re-render了,当前组件该函数还是会触发调用

组件第一次渲染完成:mounting

mouting含义

whenever the Clock is rendered to the DOM for the first time. This is called "mounting" in React

在组件内相应回调函数叫componentDidMount() componentWillMount

组件被销毁时:Unmounting

whenever the DOM produced by the Clock is removed. This is called "unmounting" in React

在组件内相应回调函数叫componentWillUnmount()

组件正在被重新渲染: Updating

在组件内相应回调函数叫componentWillUpdate componentDidUpdate

更多专业前端知识,请上 【猿2048】www.mk2048.com

深入了解React组件重新渲染的条件和生命周期相关推荐

  1. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

  2. [react] react中调用setState会更新的生命周期有哪几个?

    [react] react中调用setState会更新的生命周期有哪几个? (>=16.4之后,与props的更新一致, <16.4的版本没有static getDerivedStateF ...

  3. Vue3基础——条件渲染、列表渲染、事件事件修饰符、父子组件间的数据传递、生命周期钩子

    文章目录 p12 条件渲染v-if与v-show p13 列表渲染v-for p14 事件与参数和事件修饰符 p15 表单的数据双向绑定 p16 组件 与 父组件传递数据给子组件 -- 方式props ...

  4. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数

    目录 组件结构 组件的命名规则: 组件的data参数 <font color='red'> 组件的父子传值prop(通信) <font color='red'>组件的子--&g ...

  5. vue 组件,props 属性 ,Vue 生命周期

    本文涉及3个内容: 1.vue  组件: 目录结构: 源码分析如下: <div id="container"><h3>爱吃什么水果? app 实例</ ...

  6. react 生命周期

    1.组件从创建到死亡它会经历一些特定的阶段. 2.React组件中包含一系列钩子函数(生命周期回调函数), 会在特定的时刻调用. 3.我们在定义组件时,会在特定的生命周期回调函数中,做特定的工作. 一 ...

  7. React生命周期(包含新旧流程图对比)

    React生命周期 文章目录 React生命周期 对于生命周期的理解 重要的生命周期勾子 废弃的勾子 生命周期流程图(旧) 生命周期流程图(新) React 16.8以后的生命周期分为三个阶段,分别是 ...

  8. React组件-事件、状态和生命周期

    组件状态 事件 (事件名大写) 注意:组件事件需要配合状态,所以现在无法呈现效果 class Cmp1 extends React.Component{constructor(...args){sup ...

  9. React 深入系列4:组件的生命周期

    文:徐超,<React进阶之路>作者 授权发布,转载请注明作者及出处 React 深入系列4:组件的生命周期 React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助 ...

最新文章

  1. 在XML布局里给View设置点击事件
  2. ember.js_如何设置基本的Ember.js应用
  3. c# mysql app.config_60. C# -- 读取 appconfig文件配置数据库连接的方法
  4. wpf click事件在触摸屏上点击第一次没反应_你的PLC和你的触摸屏为什么总是通讯不上?...
  5. python元组和列表字典_python:列表、元组和字典
  6. 【nginx】nginx 原理
  7. 【推荐】2016年不得不读的九本好书
  8. mac下安装node.js步骤
  9. 如何实现TextBox与DropDownList的级联
  10. tensor数据类型,数据转换和新建数据操作
  11. Eclipse及Android环境配置
  12. 世嘉MD游戏开发进阶篇【二】:C语言实现有限状态机
  13. 新库上线 | CnOpenData境外投资企业(机构)名录数据
  14. VP9编解码标准知识总结
  15. win10任务栏太宽而且调不了_win10任务栏变宽了怎么恢复原来的_win10任务栏变宽拉不下去怎么办-爱纯净...
  16. U盘文件夹变成exe应用程序
  17. 傻子也能看懂的弗洛伊德算法(转)
  18. USB 3.0 对无线鼠标的干扰问题
  19. 使用Arduino搭建基于阿里云平台的物联网智能家居
  20. JAVA-API(一)

热门文章

  1. 酒店wifi代理服务器没有响应,wn10连接酒店wifi的登录界面无法弹出如何处理
  2. php bloginfo templatedirectory,WordPress函数:bloginfo(显示博客信息)
  3. 建立时间、保持时间与亚稳态
  4. js input 自动换行_深入Slate.js - 拯救 ContentEditble
  5. android代码画出波浪球,Android绘制波浪曲线,效果很赞的。
  6. 人工智能常用 API
  7. [virtualenvwrapper] 命令小结
  8. SecureCRT在卸载时似乎会同时删除系统自带的Consolas字体
  9. functionclass[LeetCode]Path Sum II
  10. Unity3D 访问Access数据库