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下的文件目录结构详解
Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...
- HDU-2573-Typing
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2573 这题把%s与gets()的输入法搞混了一直感觉没有错,就是找不出哪里错了, 题目思路不是很难. ...
- Spring集合配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://ww ...
- Canvas贝塞尔三级曲线
两个控制点 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 在C++中反射调用.NET(二)
反射调用返回复杂对象的.NET方法 定义数据接口 上一篇在C++中反射调用.NET(一)中,我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET程序集的简单方法,今天我们看看如何在C+ ...
- MongoDB基础之一:Conetos下安装MongoDB
1.下载自己需要的版本,我这用的是mongodb-linux-x86_64-2.4.9.tgz #cd /usr/local/src # wget http://fastdl.mongodb.org/ ...
- 一个可以提高开发效率的Git命令-- Cherry-Pick
在实际的项目开发中(使用Git版本控制),在所难免会遇到没有切换分支开发.需要在另一个分支修改bug然后合并到当前分支的情况.之前遇到这种第一反应就是将分支合并过去来解决问题.如果你那些提交当中也穿插 ...
- css实现页面居中的一种方法
在网页制作的过程中,为方便读者的阅读,会把网页内容限定在一个较小的方框中,并居中显示,如何实现这一功能呢? 1)把正文放在一个<div>标签中,只要这个标签居中整个网页就居中了. < ...
- Asp.net mvc 知多少(六)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- .NET Core在WindowsServer服务器部署及发布
VS使用WEB DEPLOY发布.NET Core程序 背景是这样的,公司有两台服务器,平时一台备用,另一台做为主生产机器.当有大量补丁或者安装什么东西需要重启的时候,交其中一台直接关掉IIS,然 ...