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 ...
随机推荐
- Linux下配置Apache最大连接数
最近有博友发现我的博客经常http 503,博客负载不大,应该不会出现负载问题,很有可能就是Apache最大连接数原因,Apache默认支持150个连接.1.先要修改最大连接数,必须了解Apache的 ...
- phpcms推荐位数据库字段详解
- Ueditor实现自定义conttoller请求或跨域请求
http://www.th7.cn/Program/java/201507/510254.shtml
- 二维动态规划——Interleaving String
97. Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2 ...
- 为 Jenkins 配置 .Net 持续集成环境
去年年底,得益于公司引入 Jenkins,让我们在持续集成方面迈出了第一步,本文不赘述如何安装 Jenkins,主要关注点在于配置 .Net 环境.另外本文是在 Windows 环境下安装的 Jenk ...
- 在QT中引用Shark Machine Learning library
最近因为项目需要,看了看机器学习方面的东西.Google一番,发现Shark正是朕需要的东西.于是准备按官方文档来使用它了.但是官方文档只有怎么生成静态库,并没有在QT里引用的sample. 废话不多 ...
- setTimeout小总结
▓▓▓▓▓▓ 大致介绍 今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结 原文:你应该知道的 setTimeout 秘密 主要内容: 1.setTimeout原理 2.se ...
- OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)
OVS 的数据流向都是由 Flow 规则控制的,今天我们就来分析 VxLAN 的 Flow 规则.提个醒:这可能是本教程最烧脑的一节,let's rock it ! 下面分析控制节点上的 flow r ...
- linux 进程间通信 之fifo
上一篇博客已经介绍了一种进程间通信的方式,但是那只是针对于有血缘关系的进程,即父子进程间的通信,那对于没有血缘关系的进程,那要怎么通信呢? 这就要创建一个有名管道,来解决无血缘关系的进程通信, fi ...
- java 文件操作 读取字节级数据(读取)
package com.swust; import java.io.*; /* * 功能:按照双精度浮点型.整型.布尔型.字符型.和字符串型的顺序从名为sample.dat文件读取数据 * 分析:用F ...