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 相关文章推荐
js 提交和设置表单的值
Dec 19 Javascript
javascript 解析后的xml对象的读取方法细解
Jul 25 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
Jun 20 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
调整小数的格式保留小数点后两位
May 14 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
javascript获取以及设置光标位置
Feb 16 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
vue绑定class的三种方法
Dec 24 Vue.js
JavaScript分页组件使用方法详解
Jul 26 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
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
js 上传图片预览问题
2010/12/06 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
python如何在终端里面显示一张图片
2016/08/17 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
python批量修改ssh密码的实现
2019/08/08 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
在python中修改.properties文件的操作
2020/04/08 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
职业生涯规划书范文
2014/03/10 职场文书
中等生评语大全
2014/05/04 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
就业证明函
2015/06/17 职场文书
Fluentd搭建日志收集服务
2022/09/23 Servers