React组件生命周期详解


Posted in Javascript onJuly 03, 2017

React组件生命周期详解

调用流程可以参看上图。

React组件提供了生命周期的钩子函数去响应组件不同时刻的状态,组件的生命周期如下:

  1. 实例化
  2. 存在期
  3. 销毁期

实例化

首次调用组件时,有以下方法会被调用(注意顺序,从上到下先后执行):

getDefaultProps

这个方法是用来设置组件默认的props,组件生命周期只会调用一次。但是只适合react.createClass直接创建的组件,使用ES6/ES7创建的这个方法不可使用,ES6/ES7可以使用下面方式:

//es7
class Component {
 static defaultProps = {}
}
//或者也可以在外面定义es6
//Compnent.defaultProps

getInitialState

设置state初始值,在这个方法中你已经可以访问到this.props。getDefaultProps只适合React.createClass使用。使用ES6初始化state方法如下:

class Component extends React.Component{
 constructor(){
 this.state = {
  render: true,
 }
 }

componentWillMount

改方法会在组件首次渲染之前调用,这个是在render方法调用前可修改state的最后一次机会。这个方法很少用到。

render

这个方法以后大家都应该会很熟悉,JSX通过这里,解析成对应的虚拟DOM,渲染成最终效果。格式大致如下:

class Component extends React.Component{
 render(){
 return (
  <div></div>
 )
 }

componentDidMount

这个方法在首次真实的DOM渲染后调用(仅此一次)当我们需要访问真实的DOM时,这个方法就经常用到。如何访问真实的DOM这里就不想说了。当我们需要请求外部接口数据,一般都在这里处理。

存在期

实例化后,当props或者state发生变化时,下面方法依次被调用:

componentWillReceiveProps

每当我们通过父组件更新子组件props时(这个也是唯一途径),这个方法就会被调用。

componentWillReceiveProps(nextProps){}

shouldComponentUpdate

字面意思,是否应该更新组件,默认返回true。当返回false时,后期函数就不会调用,组件不会在次渲染。

shouldComponentUpdate(nextProps,nextState){}

componentWillUpdate

字面意思组件将会更新,props和state改变后必调用。

render

跟实例化时的render一样,不多说

componentDidUpdate

这个方法在更新真实的DOM成功后调用,当我们需要访问真实的DOM时,这个方法就也经常用到。

销毁期

销毁阶段,只有一个函数被调用:

componentWillUnmount

每当组件使用完成,这个组件就必须从DOM中销毁,此时该方法就会被调用。当我们在组件中使用了setInterval,那我们就需要在这个方法中调用clearTimeout。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
Apr 02 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
JS数组方法concat()用法实例分析
Jan 18 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 Javascript
微信小程序实现简单购物车功能
Dec 30 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 #Javascript
Swiper实现轮播图效果
Jul 03 #Javascript
jQuery实现点击关注和取消功能
Jul 03 #jQuery
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
Jul 03 #Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 #Javascript
Bootstrap按钮组实例详解
Jul 03 #Javascript
详解使用vue实现tab 切换操作
Jul 03 #Javascript
You might like
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
PHP分页函数代码(简单实用型)
2010/12/02 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
物理系毕业生自荐书范文
2014/02/22 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
幼儿园六一主持词
2015/06/30 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
用JS写一个发布订阅模式
2021/11/07 Javascript