位置: 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爬虫案例题目)

  • iqoo8pro怎么设置通知栏样式(iQOO8pro怎么设置双系统)

    iqoo8pro怎么设置通知栏样式(iQOO8pro怎么设置双系统)

  • excel数据分析在哪里(如何学做数据分析)

    excel数据分析在哪里(如何学做数据分析)

  • 陌陌打招呼上限解除方法(陌陌打招呼上限解除,开通会员)

    陌陌打招呼上限解除方法(陌陌打招呼上限解除,开通会员)

  • 台式电脑硬盘改成移动硬盘(台式电脑硬盘改成移动硬盘打不开怎么办)

    台式电脑硬盘改成移动硬盘(台式电脑硬盘改成移动硬盘打不开怎么办)

  • 手机上课怎么投屏到电视上(手机上课怎么投屏到小度上)

    手机上课怎么投屏到电视上(手机上课怎么投屏到小度上)

  • 怎么把图片变成png格式(怎么把图片变成高清图)

    怎么把图片变成png格式(怎么把图片变成高清图)

  • 华为手机指纹解锁怎么重新设置(华为手机指纹解锁怎么设置)

    华为手机指纹解锁怎么重新设置(华为手机指纹解锁怎么设置)

  • 显示退款中是什么状态(申请退款一直显示退款中)

    显示退款中是什么状态(申请退款一直显示退款中)

  • 苹果7的手机壳苹果8能用吗(苹果7的手机壳苹果6能用吗)

    苹果7的手机壳苹果8能用吗(苹果7的手机壳苹果6能用吗)

  • cpu针脚有多少种(cpu的针脚类型)

    cpu针脚有多少种(cpu的针脚类型)

  • qq可以发多长的视频(qq发多长的字会折叠在一起)

    qq可以发多长的视频(qq发多长的字会折叠在一起)

  • 主频主要反映了计算机的(主频的说法)

    主频主要反映了计算机的(主频的说法)

  • 抖音为什么会限流(抖音为什么会限流作品)

    抖音为什么会限流(抖音为什么会限流作品)

  • c#是c语言吗(c#是一种什么类型语言)

    c#是c语言吗(c#是一种什么类型语言)

  • 天猫精灵能远程监控吗(天猫精灵能远程监听吗)

    天猫精灵能远程监控吗(天猫精灵能远程监听吗)

  • 手机qq天气怎么关闭(手机qq天气怎么显示出来的)

    手机qq天气怎么关闭(手机qq天气怎么显示出来的)

  • 怎么搞qq彩色的名字(qq如何弄彩色字体)

    怎么搞qq彩色的名字(qq如何弄彩色字体)

  • 隔空投送失败怎么解决(隔空投送失败怎么回事)

    隔空投送失败怎么解决(隔空投送失败怎么回事)

  • 天猫精灵能改名字吗(天猫精灵能改名字吗怎么改)

    天猫精灵能改名字吗(天猫精灵能改名字吗怎么改)

  • ios12取消自动续费(iphone自动续费怎么取消 ios12)

    ios12取消自动续费(iphone自动续费怎么取消 ios12)

  • 美团怎么设置地址(美团怎么设置地图位置)

    美团怎么设置地址(美团怎么设置地图位置)

  • 华为p30和nova5pro对比(华为p30和nova5pro和荣耀20pro)

    华为p30和nova5pro对比(华为p30和nova5pro和荣耀20pro)

  • 一天微信步数兑换上限(微信步数一天一更新吗)

    一天微信步数兑换上限(微信步数一天一更新吗)

  • 三星dex模式怎么开启(三星dex模式怎么用键盘)

    三星dex模式怎么开启(三星dex模式怎么用键盘)

  • 【element-ui】 el-table 表格动态合并相同数据单元格最全教程,可指定列+自定义合并条件,附完整代码(elementui ts)

    【element-ui】 el-table 表格动态合并相同数据单元格最全教程,可指定列+自定义合并条件,附完整代码(elementui ts)

  • less变量

    less变量

  • 如何理性看待国内大热的HuTool工具包(如何理性看待国企改革)

    如何理性看待国内大热的HuTool工具包(如何理性看待国企改革)

  • 2023年印花税税率口诀
  • 小规模印花税可以零申报吗
  • 另收取包装物押金
  • 原始凭证和记账凭证的作用分别是什么
  • 饭店采购食材没发票
  • 商业汇票和商业本票
  • 公司卖车怎么开公司发票
  • 弥补以前年度亏损从哪里取数
  • 资产减值准备的税务处理
  • 股权转让所得交所得税吗
  • 购房所需的税费种类和费用
  • 农产品增值税抵扣新政策2021
  • 酒店前台冲账发生错误怎么办?
  • 经济纠纷引发的刑事案件
  • 预收装修款并开发票如何转成本?
  • 人力资源公司劳务派遣怎么收费
  • 注销时留抵税额不能退怎么做分录
  • 小规模企业申请破产流程
  • 农业企业销售林木违法吗
  • 一般纳税人所得税率是多少
  • 地税发票开票有误,红字发票要如何开具?
  • 小规模纳税人咨询服务费税率是多少
  • 企业改制后职工有几项补偿
  • 小规模税局代增值税专用发票怎么交税
  • 福利费不需要发票记账吗
  • windows 7如何
  • windows7电脑时间不对
  • 子公司开票给母公司,冲减利润,怎么避免税务风险
  • 增值税减免后按3%记提税款吗
  • 如何写php守护进程数据
  • 商业折扣影响入账金额吗
  • yii2关联查询
  • 洛阿雷城堡,西班牙韦斯卡 (© Sebastian Wasek/Alamy)
  • 个人买车缴纳车船税吗
  • 前端项目部署到nginx
  • 收到税务局退回的企业所得税分录
  • 小规模纳税人交增值税吗
  • 浏览器集成什么意思
  • thinkphp登录
  • php怎么访问本地的网页
  • 职工报销医药费属于什么会计科目
  • 公司支付工伤赔偿,是先签字还是先打钱
  • 医学图像处理的步骤一是设计
  • 原生php和框架php的区别
  • 销售提成占比
  • 物流辅助服务要办许可证吗
  • git主干
  • markdown小小白常用语法
  • 织梦模板安装完整教程
  • mysql从一张表更新到另一张表
  • 出租车票可以查到行程吗
  • 模板的固定
  • 可供出售交易性金融资产申报表怎么填
  • 企业哪些情况下需要交税
  • 对公可以转个人账户货款吗
  • 保险没有合同算生效吗
  • 年终奖能算在工资里吗
  • 营业税差额征税范围
  • 公司是否可以投资股票
  • 其他应收款减值损失可以转回吗
  • 利润表怎么没有本月数
  • 营业外收入计入哪里
  • 建账选用什么会计制度
  • 安装sql server需要注意什么
  • xp怎么把ie浏览器放到桌面
  • win8.1玩英雄联盟
  • 如何创建一个wifi
  • icore是什么意思
  • 如何解决焦虑的心理
  • win10的uwp在哪
  • android线程间通信的几种方法
  • unity网络通信插件
  • jquery.handleerror
  • centos搭建php
  • 手机sd卡满了怎么办
  • jquery对话框组件
  • 税务局和国税
  • 税务部门政务公开
  • 如何认真贯彻落实中央八项规定,切实改进工作作风
  • 减免所得税额怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设