react 组件的生命周期
- 组件的生命周期
- 过程
- 装载(Mounting) :组件被插入到 DOM 中;
- 更新(Updating) :组件重新渲染以更新 DOM;
- 卸载(Unmounting) :组件从 DOM 中移除。
- 过程
- 包含 will 的方法在某个时间节点之前执行
- 包含 did 方法在某个时间节点 之后 执行
- 三个阶段(按调用顺序
- 实例化(装载)

- getDefaultProps(在任何实例创建之前执行,不在装载阶段执行
- 该方法在 组件创建时( createClass )执行一次并缓存返回值。
- 如果组件使用时未设置属性,就从缓存中读取默认属性。
- getDefaultProps() 返回的缓存数据会在所有实例间共享。
- getInitialState
- 组件装载之前执行一次,返回值用作 this.state 的初始值。
- constructor
- 构造器。
- super();//第一行必须是这个。调用父组件的构造器。
- this.state = {......};//初始化实例的属性和组件的状态。
- componentWillMount
- 在完成首次渲染之前被调用。
- render(必需
- 创建一个虚拟DOM
- 只能通过this.props和this.state访问数据
- 可以返回null,false或者react组件
- 只能有一个顶级组件
- componentDidMount
- 真实的DOM已经被渲染之后调用
- 可以访问原始DOM,如测量渲染出DOM元素的高度,或用计时器操作它
- 此方法中可进行
- 与其他 JavaScript 框架集成,如初始化 jQuery 插件;
- 使用 setTimeout / setInterval 设置定时器;
- 通过 Ajax/Fetch 获取数据;
- 绑定 DOM 事件;
- 存在期(更新)

- componentWillReceiveProps(state改变时,不调用
- 组件的props发生改变时才调用(任意时刻,组件的props都可以通过父辈组件来更改
- 函数内可以更改props对象及更新state
- 此时props并没有改变,通过this.prop获取到的仍是还没有更改的
- shouldComponentUpdate
- componentWillReceiveProps调用后调用
- 首次渲染或调用了forceUpdate方法后不调用
- componentWillUpdate
- 组件会在接收到新的props或state进行渲染前,调用该方法
- 该方法中不可以更新state或props
- 此时props并没有改变,通过this.prop获取到的仍是还没有更改的
- render
- componentDidUpdate
- 更新渲染好的DOM
- 此处获取到的是改变后的props
- 销毁&清理期(卸载)
- componentWillUnmount
- 需要撤销componentDidMount中添加的所有任务,如:定时器、事件监听
- 反模式
- 尝试在constructor中通过this.props来创建state是一种反模式
- 从prop中计算然后将它赋值为state的做法也是一种反模式
- 正确模式应该是在渲染时,计算这些值
- 保证计算后的值永远不会与派生出它的props值不同步
react 组件的生命周期的更多相关文章
- 2. React组件的生命周期
2. React组件的生命周期 使用React开发时候用到最多的就是React的组件了,通过继承React.Component,加入constructor构造函数,实现Render方法即可.这当中Re ...
- React 组件的生命周期方法
React 组件的生命周期方法 按渲染顺序: 1: componentWillMount() – 在渲染之前执行,在客户端和服务器端都会执行. 2: componentDidMount() – 仅在第 ...
- react第三单元(react组件的生命周期)
第三单元(react组件的生命周期) #课程目标 灵活掌握react组件的生命周期以及组件的活动过程. 能够灵活使用react的生命周期 #知识点 react的类组件的生命周期分为三个阶段 实例期 存 ...
- React组件和生命周期简介
React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...
- 理解React组件的生命周期
本文作者写作的时间较早,所以里面会出现很多的旧版ES5的时代的方法.不过,虽然如此并不影响读者理解组件的生命周期.反而是作者分为几种不同的触发机制来解释生命周期的各个方法,让读者更加容易理解涉及到的概 ...
- React: React组件的生命周期
一.简介 在前面的第二篇博文中对组件的生命周期虽然做了一个大略介绍,但总感觉说的过于简单,毕竟生命周期是React组件的核心部分.在我们熟练使用React挂载和合成组件来创建应用表现层的过程中,针对数 ...
- react 组件的生命周期 超简版
组件从被创建到被销毁的过程称为组件的 生命周期: 通常,组件的生命周期可以被分为三个阶段:挂载阶段.更新阶段.卸载阶段: 一.挂载阶段 这个阶段组件被创建,执行初始化,并被挂载到DOM中,完成组件的第 ...
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- React 组件的生命周期API和事件处理
一.简单记录React的组件的简洁的生命周期API: A:实例化期: 一个实例第一次被创建时所调用的API与其它后续实例被创建时所调用的API略有不同. 实例第一次被创建时会调用getDefaultP ...
随机推荐
- --@angularjs--理解Angular中的$apply()以及$digest()
$apply() 和 $digest() 在 AngularJS 中是两个核心概念,但是有时候它们又让人困惑.而为了了解 AngularJS 的工作方式,首先需要了解 $apply() 和 $dige ...
- Struts2拦截器介绍
一.拦截器简介 Struts拦截器和Action的关系如图: 为了在使用拦截器时制定参数值,应通过<interceptor-ref -/>元素添加<param -/>子元素来为 ...
- VMware虚拟机与宿主无法复制的解决办法
由于工作需要,上网机器使用虚拟机,因此需要经常来回的拷贝文件,而vmware从6.5一直走来到10.0.1,总是有一个问题很让人苦恼---共享粘贴板总是会无故失效.经常实验,发现可以经过以下方法临时解 ...
- 解剖 Elasticsearch 集群 - 之三
解剖 Elasticsearch 集群 - 之三 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论 Elasticsearch 如何提供准实时搜 ...
- javascript window.confirm确认 取消对话框实现代码小结
本文章讲述的三种都是基于了javascript confirm提示确认框的做法了,只是在不同的地方写哦,有需要的同学可参考一下 confirm() 方法 confirm() 方法用于显示一个带有指 ...
- ubuntu开机自动关闭独显,使用集成显卡
我的本子是联想y470p-ise,因为是有双显卡,而ubuntu在开机后,双显卡默认是同时工作,会产生巨大的发热,导致很不爽.而且在ubuntu下基本我也不用独显,所以有开机关闭独显的需求. ubun ...
- java7 invokedynamic命令深入研究
在看java虚拟机字节码执行引擎的时候,里面提到了java虚拟机里调用方法的字节码指令有5种: invokestatic //调用静态方法 invokespecial //调用私有方法.实例构造器方法 ...
- Unity随手记
过年11天假期,带娃带了7天,吃吃喝喝.也看了点书,<射雕英雄传>(书)看了一半,还有就是在看<unity官方案例精讲>这本. 随手记一些自觉有价值或者有意思的点. 1. 对脚 ...
- HDU 2092 整数解
整数解 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Import Statements 导入语句
Syntax of an Import Statement 导入语句的语法 An import statement allows clients to tell the engine which mo ...