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 相关文章推荐
jquery键盘事件使用介绍
Nov 01 Javascript
Table冻结表头示例代码
Aug 20 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
Feb 05 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
vue系列之动态路由详解【原创】
Sep 10 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
详解JavaScript 异步编程
Jul 13 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
Prototype Template对象 学习
2009/07/19 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
Python代码解决RenderView窗口not found问题
2016/08/28 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
程序员机试试题汇总
2012/03/07 面试题
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
工程项目建议书范文
2014/03/12 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
升职自我推荐信范文
2015/03/25 职场文书
军训通讯稿范文
2015/07/18 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js