深入了解React组件重新渲染的条件和生命周期
React组件rerender的真正条件
当前组件的State中的属性改变时且当前组件的shouldcomponentupdate返回true,那么当前组件会rerender
组件的props中的任一属性的值有变化(即使这个任一属性的值是对象,变化的仅仅是该对象中的某属性的值,此刻也算props发生了变化)且当前组件的shouldcomponentupdate return true时且当期组件所有父级以上组件的shouldcomponentupdate return true,当前组件才会re-render
当前组件的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
深入了解React组件重新渲染的条件和生命周期的更多相关文章
- React之状态(state)与生命周期
很多时候,我们的页面数据是动态的.所以,我们需要实时渲染页面: 一.用定时函数setInterval() 组件(输出当前时间): index.js: 这样每隔1秒页面就会重新渲染一次,这样传进去的时间 ...
- React躬行记(4)——生命周期
组件的生命周期(Life Cycle)包含三个阶段:挂载(Mounting).更新(Updating)和卸载(Unmounting),在每个阶段都会有相应的回调方法(也叫钩子)可供选择,从而能更好的控 ...
- Vue.js 子组件的异步加载及其生命周期控制
前端开发社区的繁荣,造就了很多优秀的基于 MVVM 设计模式的框架,而组件化开发思想也越来越深入人心.这其中不得不提到 Vue.js 这个专注于 VM 层的框架. 本文主要对 Vue.js 组件化开发 ...
- [Vuejs] 组件 v-if 和 v-show 切换时生命周期钩子的执行
v-if 初始渲染 初始值为 false 组件不会渲染,生命周期钩子不会执行,v-if 的渲染是惰性的. 初始值为 true 时,组件会进行渲染,并依次执行 beforeCreate,created, ...
- drf框架概况-resful接口规范-请求模块-渲染模块-Postman-drf请求生命周期
drf框架 全称:django-rest- framework 知识点: """ 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码-基于restful ...
- 前端组件化Polymer入门教程(5)——生命周期
以前我对生命周期这个概念还真不是很清楚,不过想想也简单,比如说人的生命周期,无非就是生老病死.而对于程序的生命周期就是说,它在每个阶段都会做不同的事,再比如说回调函数把,ajax返回的时候它才执行,那 ...
- 第三章 四大组件之Activity(一)生命周期
1.生命周期: onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy() 2.各种状况下Ac ...
- 【React】学习笔记(二)——组件的生命周期、React脚手架使用
原教程视频:ttps://www.bilibili.com/video/BV1wy4y1D7JT?p=2&spm_id_from=pageDriver 目录 一.组件的生命周期 1.1.生命周 ...
- 22.1 、react生命周期(一)
在每个react组件中都有以下几个生命周期方法~我们需要在不同阶段进行讨论 组件生命周期概述 1.初始化 在组件初始化阶段会执行 constructor static getDerivedStateF ...
随机推荐
- es6学习 http://es6.ruanyifeng.com/
基础学习 http://es6.ruanyifeng.com/ 够了 1字符串 字符串的遍历器接口 for (let codePoint of 'foo') { console.log(code ...
- 用python 4行搞定基数排序
from random import randint def main(): A = [randint(1, 99999999) for _ in xrange(9999)] for k in xra ...
- 资源帖:CV代码库搜集
2013计算机视觉代码合集一: 原文链接:http://www.yuanyong.org/blog/cv/cv-code-one 切记:一定要看原文链接 原文链接: http://blog.csdn. ...
- CDR教程-海报中的立体星星怎么画
在海报招贴.平面设计中有时需要凸显节日气氛,绘制一些立体星星图案作为陪衬.有人说cdr软件实现不了立体星星的制作,我想说,只有想不到,没有做不到.制作立体星星可通过cdr软件中的某些工具来实现,本案例 ...
- CorelDRAWX8新功能摆脱传统工作模式
最近,有一则好消息CorelDRAW X8特惠啦!功能不少价格却不高的CDR X8很快成了设计师们的新宠,三折之后你动心了么? 点击这里了解更多.. 那么CDR X8到底有何功能和亮点呢? 完全可自定 ...
- 图片放大不失真软件PhotoZoom如何使用?
PhotoZoom可以将我们一些过于像素低的照片可以无失真放大,那么PhotoZoom是如何实现无失真照片放大的呢? 以上图像中的编号表示每个步骤应操作的位置. 单击“打开”,并选择您想调整大小的图像 ...
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- webpack学习笔记(2)--webpack.config.js
3 模式 mode mode 参数设置为 development(开发模式), production(生产模式) 或 none(无),可以启用对应环境下 webpack 内置的优化.默认值为 prod ...
- python笔记(1)
1.python2.x版本默认编码格式是ASSIC,不支持中文: 2.python3.x版本默认编码格式是UNICODE,支持中文: 3.支持中文的字符编码表:GB2312→GBK1.0→GB1803 ...
- Scrapy系列教程(6)------怎样避免被禁
避免被禁止(ban) 有些网站实现了特定的机制,以一定规则来避免被爬虫爬取. 与这些规则打交道并不easy,须要技巧,有时候也须要些特别的基础. 假设有疑问请考虑联系 商业支持 . 以下是些处理这些网 ...