位置: IT常识 - 正文

React组件的生命周期函数(react组件constructor)

编辑:rootadmin
React组件的生命周期函数 文章目录React组件生命周期认识生命周期生命周期函数不常用生命周期函数React组件生命周期认识生命周期

推荐整理分享React组件的生命周期函数(react组件constructor),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react组件声明,react组件生命周期函数,react组件生命周期嵌套执行顺序,react组件生命周期函数,react组件生命周期的三个阶段,react组件生命周期函数,react组件生命周期三个状态,react组件的生命周期,内容如对您有帮助,希望把文章链接给更多的朋友!

很多的事物都有从创建到销毁的整个过程,这个过程称之为是生命周期;

React组件也有自己的生命周期,了解组件的生命周期可以让我们在最合适的地方完成自己想要的功能;

生命周期和生命周期函数的关系如下:

生命周期是一个抽象的概念,在生命周期的整个过程,分成了很多个阶段;

比如装载阶段(Mount),组件第一次在DOM树中被渲染的过程;

比如更新过程(Update),组件状态发生变化,重新更新渲染的过程;

比如卸载过程(Unmount),组件从DOM树中被移除的过程;

React内部为了告诉我们当前处于哪些阶段,会对我们组件内部实现的某些函数进行回调,这些函数就是生命周期函数:

比如实现componentDidMount函数:组件已经挂载到DOM上时,就会回调;

比如实现componentDidUpdate函数:组件已经发生了更新时,就会回调;

比如实现componentWillUnmount函数:组件即将被移除时,就会回调;

我们可以在这些回调函数中编写自己的逻辑代码,来完成自己的需求功能;

我们谈React生命周期时,主要谈的类的生命周期,因为函数式组件是没有生命周期函数的;(后面我们可以通过hooks来模拟一些生命周期的回调)

生命周期函数

我们先来学习一下最基础、最常用的五个生命周期函数:

Constructor

组件中第一个调用的生命周期函数, 如果不初始化 state 或不进行方法绑定,则不需要为 React 组件实现构造函数。

constructor中通常只做两件事情:

通过给 this.state 赋值对象来初始化内部的state;为事件绑定实例(this);

render

render函数也是组件的生命周期函数, 它的使用方法上一篇文章有讲解过, 这里不再过多赘述

componentDidMount

React组件的生命周期函数(react组件constructor)

componentDidMount() 会在组件挂载后(插入 DOM 树中)立即调用。

componentDidMount中通常进行哪里操作呢?

依赖于DOM的操作可以在这里进行;在此处发送网络请求就最好的地方;(官方建议)可以在此处添加一些订阅(会在componentWillUnmount取消订阅);

componentDidUpdate

componentDidUpdate() 会在更新后会被立即调用,首次渲染不会执行此方法。

当组件更新后,可以在此处对 DOM 进行操作;

如果你对更新前后的 props 进行了比较,也可以选择在此处进行网络请求;(例如,当 props 未发生变化时,则不会执行网络请求)。

componentWillUnmount

componentWillUnmount() 会在组件卸载及销毁之前直接调用。

在此方法中执行必要的清理操作;

例如,清除 timer,取消网络请求或清除在 componentDidMount() 中创建的订阅等;

上面这五个生命周期函数是我们最常用的, 它们的执行时机可以参考下面这幅图片

首先执行constructor函数

其次执行render函数, 将render函数的结果进行渲染

紧接着会将组件挂载到DOM上, 挂载完成执行componentDimMount函数

当数据发生改变, 会重新调用render函数, 等待数据更新完成后会调用componentDidUpdate函数

组件卸载或销毁之前, 调用componentWillUnmount

演示代码

export class App extends Component { constructor() { console.log("constructor被调用") super() this.state = { message: "Hello World" } } btnClick() { this.setState({ message: "你好啊" }) } render() { console.log("render被调用") const { message } = this.state return ( <div> <button onClick={() => this.btnClick()}>按钮</button> <h2>{ message }</h2> </div> ) } componentDidMount() { console.log("componentDidMount被调用") } componentDidUpdate() { console.log("componentDidUpdate被调用") } componentWillUnmount() { console.log("componentWillUnmount被调用") }}不常用生命周期函数

除了上面介绍的生命周期函数之外,还有一些不常用的生命周期函数(注意这个不常用不是我说的, 实在React官网中, 官方列举的):

下面三个不常用的生命周期getSnapshotBeforeUpdate和shouldComponentUpdate是相对有用的

getDerivedStateFromProps:state 的值在任何时候都依赖于 props时使用;该方法返回一个对象来更新state;

getSnapshotBeforeUpdate:在React更新DOM之前回调的一个函数,可以获取DOM更新前的一些信息(比如说滚动位置);

shouldComponentUpdate:该生命周期表示, 是否需要重新更新render函数进行渲染, 返回true表示需要, 返回false表示不需要, 这个生命周期函数还是很常用,但是我们等待讲性能优化时再来详细讲解;

另外,React中还提供了一些过期的生命周期函数,这些函数已经不推荐使用。

更详细的生命周期相关的内容,可以参考官网: https://zh-hans.reactjs.org/docs/react-component.html

本文链接地址:https://www.jiuchutong.com/zhishi/300848.html 转载请保留说明!

上一篇:什么是 Web 3.0?(新手入门指南)(什么是男人无力的行为)

下一篇:Python 爬虫案例(python爬虫案例题目)

  • 个体工商户需要进项发票吗
  • 出口货物退(免)税管理办法
  • 纳税人资格是什么意思
  • 企业给员工的福利取消了可以劳动仲裁么
  • 业务活动表本月数和本年累计数
  • 预缴的附加税月末结转吗
  • 代收货款的商品
  • 建筑安装业什么时候确认收入
  • 退租未摊销的装修费会计分录怎么写
  • 存款取款业务记入那个日记账?
  • 新会计准则短期租赁会计分录
  • 增值税申报收入和企业所得税申报收入
  • 短期理财的门槛
  • 价内税和价外税名词解释
  • 通用机打发票现在还有吗
  • 滞留票的原因是什么?
  • 注册资本金印花税减半征收
  • 发票后附的销售清单怎么黏
  • 印花税走什么费用
  • 软件固定资产还是无形资产
  • qq助手有什么用处
  • 怎么使用win10
  • macOS 11 Big Sur beta 4值得升级吗?macOS 11 Big Sur beta 4更新详解
  • 股份支付的特征是什么
  • 取得短期借款会计科目
  • 工业总产值 工业销售产值
  • 个体工商户与家庭生活难以划分的费用
  • php面向对象是什么意思
  • thinkphp生成html
  • 出口货物免抵退税额的计算方法
  • css垂直导航栏
  • 长期负债和应付账款
  • 轻量级网络设计
  • fping命令参数
  • 游戏microsoft visual c++ runtime
  • 小微企业税款征收方式
  • 税收分类口诀
  • 商业承兑汇票在网银上怎么查询
  • 应纳税所得额可以是负数吗
  • 以美元报关是否要交税
  • 浅谈数据库优化设计
  • 物流公司扣押货物算犯法吗
  • 企业所得税视同销售的有哪些?
  • 会计法中单位负责人均指法定代表人
  • 给保安买大衣算贿赂吗
  • 出口企业样品收入分录
  • 补发工资怎么补发
  • 为什么生产成本不属于损益类科目
  • 单位保险柜里都放些什么
  • 资源税代扣代缴取消时间
  • 以前年度损益调整是什么意思
  • 附加税减免政策2020年
  • 党委费用支出需要什么票据
  • 国税定额发票有什么用
  • 应交税费会计分录实例分析
  • oracle和sqlserver的区别
  • MYSQL updatexml()函数报错注入解析
  • sql server 2008教程
  • windows10的xbox如何录制视频
  • windows2008 iis7如何取消目录执行权限的详细图文介绍
  • CentOS EXT4文件系统的详解
  • vi编辑器的使用
  • win8怎么打开cmd命令窗口?
  • centos zsh
  • 验证win10
  • ERROR 1045: Access denied for user: root@localhost (Using password: NO)
  • java 解析javascript
  • html中清除浮动的关键代码
  • html5+javascript实现简单上传的注意细节
  • Javascript 事件冒泡机制详细介绍
  • python的了解
  • 安卓焦点
  • python脚本代码大全
  • javascript要学到什么程度
  • 普通话的对话
  • 怎么注册用户名短的淘宝账号
  • 自用的房产怎么交房产土地税
  • 一般纳税人每月开票金额有限额吗
  • 一般纳税人做账收费标准
  • 杭州注册公司需要钱吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设