ReactJS-3-组件生命周期
简介
普通的UI应用生命周期一般包括Birth, Growth, Death, React中Component的生命周期也是如此,这是一个持续的过程,贯穿整个应用的生命历程。
阶段
1.mounting(birth)
启动和初始化组件的时候,在这个阶段,会发生如下事情:
- 定义和配置props和state
- 组件和组件的孩子会装载到本地用户界面堆栈
- 此阶段只发生一次
2.update(growth)
在以下情况会进入此阶段:
- 更新了props ,state
- 处理用户交互
- 组件层次结构间进行通信。
此阶段所花时间最多,发生不止一次
3.unmount(death)
在以下情况会进入此阶段:
- 从Native UI卸载组件实例
- 用户导航离开
- UI 界面改变
- 组件隐藏
此阶段发生一次,组件准备好垃圾回收
组件生命周期图
组件生命周期方法介绍(来自官方文档)
Munting Phase
1. constructor()
在mount之前调用,如果没有更新state或绑定方法,不需要此方法,一般在此方法中完成组件state的初始化工作等
2. componentWillMount()
在mounting发生前立即调用,在render()之前调用,在此方法中调用setState的时候,会触发WillUpdate,render, DidUpdate。一般在此方法中完成部分组件的启动(这些组件的启动不依赖DOM,因为此时DOM未加载完成),如 Ajax 数据获取、启动定时器等。
3. componentDidMount()
在此方法中调用setState方法会触发一次额外的render函数。如果组件的启动依赖DOM的话,需要在此方法中进行,因为此时已经执行过render,dom已经加载完成。
Updating Phase
1. componentWillReceiveProps()
在一个已经mount过的组件接收props变化前调用,调用setState()方法不会触发,有时props不变也会调用,因此如果只希望该方法在发生变化时使用,请比较props和nextProps
2. shouldComponentUpdate()
默认为true。在初始渲染或使用forceUpdate()时,不会调用此方法。返回false不会阻止子组件在其状态更改时重新呈现。目前,如果shouldComponentUpdate()返回false,则不会调用componentWillUpdate(),render()和componentDidUpdate()
3. componentWillUpdate()
当接收到props和state的改变的render之前执行
4. componentDidUpdate()
更新之后立即执行
Unmount Phase
1. componentWillUnmount()
在卸载和销毁组件之前立即调用。在该方法中,一般完成数据的清理,如在移除或隐藏组件的时候,定时器仍然工作,则需要在这个函数里完成定时器的清理,终止定时器的工作。
ReactJS-3-组件生命周期的更多相关文章
- angular2系列教程(五)Structural directives、再谈组件生命周期
今天,我们要讲的是structural directives和组件生命周期这两个知识点.structural directives顾名思义就是改变dom结构的指令.著名的内建结构指令有 ngIf, n ...
- Angular2 组件生命周期
1. 说明 Angular每个组件都存在一个生命周期,从创建,变更到销毁.Angular提供组件生命周期钩子,把这些关键时刻暴露出来,赋予在这些关键结点和组件进行交互的能力. 2. 接口 按照生命周期 ...
- [React] 多组件生命周期转换关系
前段时间一直在基于React做开发,最近得空做一些总结,防止以后踩坑. 言归正传,React生命周期是React组件运行的基础,本文主要是归纳多组件平行.嵌套时,生命周期转换关系. 生命周期 Reac ...
- 【转】Tomcat组件生命周期管理
Tomcat组件生命周期管理 Tomcat中Server,Service,Connector,Engine,Host,Context,它们都实现了org.apache.catalina.Lifecyc ...
- Castle IOC容器组件生命周期管理
主要内容 1.生命处理方式 2.自定义生命处理方式 3.生命周期处理 一.生命处理方式 我们通常创建一个组件的实例使用new关键字,这样每次创建出来的都是一个新的实例,如果想要组件只有一个实例,我们会 ...
- Android组件生命周期(二)
引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...
- Android组件生命周期(一)
引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...
- vue父子组件生命周期执行顺序
之前写了vue的生命周期,本以为明白了vue实例在创建到显示在页面上以及销毁等一系列过程,以及各个生命周期的特点.然而今天被问到父子组件生命周期执行顺序的时候一头雾水,根本不知道怎么回事.然后写了一段 ...
- React.js 小书 Lesson20 - 更新阶段的组件生命周期
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson20 转载请注明出处,保留原文链接和作者信息. 从之前的章节我们了解到,组件的挂载指的是将组件 ...
- Vue父子组件生命周期执行顺序及钩子函数的个人理解
先附一张官网上的vue实例的生命周期图,每个Vue实例在被创建的时候都需要经过一系列的初始化过程,例如需要设置数据监听,编译模板,将实例挂载到DOM并在数据变化时更新DOM等.同时在这个过程中也会运行 ...
随机推荐
- android 开发中用到的工具-持续更新(码农必看)
1. vim 单文件查看改动利器(一直使用支持各种编码各种文件,各种插件),欢迎下载笔者插件 git clone https://github.com/green130181/vim-conf.git ...
- 谈谈TensorFlow with CPU support or TensorFlow with GPU support(图文详解)
不多说,直接上干货! You must choose one of the following types of TensorFlow to install: TensorFlow with CPU ...
- 【PA2013】【BZOJ3733】Iloczyn
Description 给定正整数n和k,问是否能将n分解为k个不同正整数的乘积 Input 第一行一个数T(T<=4000)表示測试组数 接下来T行每行两个数n(n<=10^9),k(k ...
- Oracle11g表空间导入dmp数据
如果你的表数据没有附带表空间和用户名,那么只要一句话 Imp {u_name}/{u_pwd}@{local_svrname} fromuser={from_user} touser={u_name} ...
- 硬件开发之pcb---PCB抗干扰设计原则
一 电源线布置: 1.电源线.地线的走向应与资料的传递方向一致. 二 地线布置: 1.数字地与模拟地分开. 2.接地线应尽量加粗,致少能通过3倍于印制板上的允许电流,一般应达2~3mm. 3.接地线应 ...
- 设计模式-(12)迭代器模式 (swift版)
一,概念 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示.迭代器模式属于行为型 ...
- bzoj 4521 电话号码
题目大意: 求$[L,R]$中,满足不同时存在4和8且有连续三个一样的个数 思路: 我为什么要记忆化搜索里带-1啊 我可真是个** 直接记忆化搜索记前两位是否有4,8以及是否满足连续 #include ...
- mysql数据恢复失败记录
今天遇到了MySQL有几个数据表空间丢失的问题,作为一个外行尝试好久没恢复成功,考虑到只是几个基础数据表,就删除数据表停止服务,删除ibd文件后再创新创建表解决了问题. 近期的一些事让我不像以前一样钻 ...
- linux下libpcap抓包分析
一.首先下载libpcap包http://www.tcpdump.org/#latest-release 然后安装,安装完成后进入安装根目录的tests文件夹,编译运行findalldevstest. ...
- 客户端与服务器持续同步解析(轮询,comet,WebSocket)
在B/S模型的Web应用中,客户端常常需要保持和服务器的持续更新.这种对及时性要求比较高的应用比如:股票价格的查询,实时的商品价格,自动更新的twitter timeline以及基于浏览器的聊天系统( ...