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 调试javascript的工具
Apr 29 Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
微信小程序开发探究
Dec 27 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
浅谈JavaScript 代码整洁之道
Oct 23 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
小程序input数据双向绑定实现方法
Oct 17 Javascript
JS如何生成动态列表
Sep 22 Javascript
jQuery实现增删改查
Dec 22 jQuery
利用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常用的url处理函数总结
2014/11/19 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
python中文乱码的解决方法
2013/11/04 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python实现俄罗斯方块游戏
2020/03/25 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python的log日志功能及设置方法
2019/07/11 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
校园奶茶店创业计划书
2014/01/23 职场文书
渡河少年教学反思
2014/02/12 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
机械专业技术员求职信
2014/06/14 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
冰雪公主观后感
2015/06/16 职场文书
祝酒词范文
2015/08/12 职场文书
运动会广播稿300字
2015/08/19 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL