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

  • word怎么把图片居中(word怎么把图片放在中间)

    word怎么把图片居中(word怎么把图片放在中间)

  • 苹果x短信特效看不到(iphone短信特效)

    苹果x短信特效看不到(iphone短信特效)

  • 被拉黑还能看对方点赞吗(被拉黑还能看对方微信号吗)

    被拉黑还能看对方点赞吗(被拉黑还能看对方微信号吗)

  • 小红书被降权了怎么补救(小红书修改内容之后降权)

    小红书被降权了怎么补救(小红书修改内容之后降权)

  • 华为手机怎么禁止下载某个软件(华为手机怎么禁止下载乱七八糟软件)

    华为手机怎么禁止下载某个软件(华为手机怎么禁止下载乱七八糟软件)

  • x1carbon2015和2016区别(x1carbon2015和2016哪个好)

    x1carbon2015和2016区别(x1carbon2015和2016哪个好)

  • 抖音在线功能怎么关闭(抖音在线功能怎么没有了)

    抖音在线功能怎么关闭(抖音在线功能怎么没有了)

  • 腾讯视频小窗口怎么设置(腾讯视频小窗口播放不见了)

    腾讯视频小窗口怎么设置(腾讯视频小窗口播放不见了)

  • 华为nova5天气桌面不见了怎么办(华为nova5手机天气预报怎么设置在桌面)

    华为nova5天气桌面不见了怎么办(华为nova5手机天气预报怎么设置在桌面)

  • 天猫会员卡有什么用(天猫会员卡值得买吗)

    天猫会员卡有什么用(天猫会员卡值得买吗)

  • airpods充电盒充电时指示灯亮吗(airpods充电盒充不进去电)

    airpods充电盒充电时指示灯亮吗(airpods充电盒充不进去电)

  • preortor是什么牌子电脑(predire是什么牌子)

    preortor是什么牌子电脑(predire是什么牌子)

  • 华为p20有没有人脸解锁(华为p20有没有人工智能)

    华为p20有没有人脸解锁(华为p20有没有人工智能)

  • 小米9后盖碎了自己能换吗(小米9后盖碎了换一个多少钱)

    小米9后盖碎了自己能换吗(小米9后盖碎了换一个多少钱)

  • 苹果8来电闪光灯不闪(苹果8来电闪光灯怎么设置不起作用)

    苹果8来电闪光灯不闪(苹果8来电闪光灯怎么设置不起作用)

  • 快手怎么申请解除限流(快手怎么申请解除屏蔽)

    快手怎么申请解除限流(快手怎么申请解除屏蔽)

  • 无线键盘是蓝牙的吗(无线键盘是蓝牙的好还是接收器的好)

    无线键盘是蓝牙的吗(无线键盘是蓝牙的好还是接收器的好)

  • ipad5代是什么型号(ipad 5代是什么)

    ipad5代是什么型号(ipad 5代是什么)

  • 抖音怎么看谁看了我(抖音怎么推流)

    抖音怎么看谁看了我(抖音怎么推流)

  • 怎么看自己手机什么时候买的(怎么看自己手机号)

    怎么看自己手机什么时候买的(怎么看自己手机号)

  • 趣分类不玩可以注销吗(趣分类这几天怎么了)

    趣分类不玩可以注销吗(趣分类这几天怎么了)

  • 淘宝盖楼是什么意思(淘宝盖楼有什么用)

    淘宝盖楼是什么意思(淘宝盖楼有什么用)

  • 苹果x为什么用电特别快(苹果x为什么用不了电信卡)

    苹果x为什么用电特别快(苹果x为什么用不了电信卡)

  • 重装系统怎么保存原来的文件(重装系统怎么保存c盘原来的文件)

    重装系统怎么保存原来的文件(重装系统怎么保存c盘原来的文件)

  • 华为p30pro多少克(华为p30pro多重多少千克)

    华为p30pro多少克(华为p30pro多重多少千克)

  • 微信怎么关闭收款功能(微信怎么关闭收款声音)

    微信怎么关闭收款功能(微信怎么关闭收款声音)

  • 充电宝押金什么时候退(充电宝押金什么时候返)

    充电宝押金什么时候退(充电宝押金什么时候返)

  • 【Pytorch】torch. matmul()(pytorch .pt)

    【Pytorch】torch. matmul()(pytorch .pt)

  • 缴纳去年的企业所得税怎么做账
  • 收据税前扣除是多少
  • 招标代理服务费由谁支付
  • 费用已支付但发票未收可以先记费用吗
  • 发票上的专用章没盖清楚,可以在票面其他空白处补盖吗
  • 小企业商品销售的入账价格
  • 现金存入银行会计摘要怎么写
  • 持续经营损益怎么算
  • 领用包装物会计处理
  • 车辆生产企业目录
  • 符合营改增应税服务规定的有
  • 公司购买商品房可以抵扣增值税吗
  • 计提工资需要工资表吗
  • 工程分包是什么工作
  • 建筑企业管理部门
  • 公益捐款
  • 小微企业增值税收优惠政策
  • 单独计价入账的土地是固定资产吗
  • 非流动资产处置净收益是指什么
  • 结汇汇兑损益账务处理
  • 融资租赁和融资性售后回租的区别
  • 选择简易征收可以开专票吗
  • 无形资产研发支出适用于税前加计扣除的政策
  • 股权收购特殊性税务处理案例
  • 苹果电脑mac系统怎么用
  • 出纳员交接工作
  • 增发股票会计科目
  • 应收账款期末怎么算
  • 转账收到支付宝电话
  • Win10组策略怎么进
  • win10如何给文件夹上锁
  • 银行收取对公账户服务费有什么用
  • vue实战技巧
  • 应收账款和应付账款的管理
  • mysql事务执行流程
  • 前端没思路怎么办
  • 变动成本产品成本包括哪些
  • 房地产预缴所得税怎么算
  • 微信小程序几几年上线的
  • vue角色管理
  • websocket怎么用
  • vue 组件
  • audo命令
  • 错账的类型及对应的更正方法
  • 固定资产折完了怎么办
  • 按摊余成本计量的应收账款
  • 铁路运费的印花税进什么科目
  • 进项大于销项附加税怎么处理
  • 家具采购单
  • 学电脑哪个网站比较好
  • python怎么用
  • c#连接access数据库实例
  • access数据库不能存放什么数据
  • 小企业销售收入分录
  • 补提去年企业所得税会计分录
  • 发货环节产生的影响
  • 带折扣的发票如何开具
  • 固定制造费用包括变动制造费用吗
  • 空气检测费计入什么科目
  • sql语句如何将一列数据值相加
  • navicate创建存储过程
  • aix解除镜像
  • windows xp正式退休
  • Fedora 9.0 Apache+PHP+MYSQL 环境安装
  • win7系统安装教程不用u盘
  • linux获取操作命令的使用方法或参数选项内容
  • linux内核的作用
  • linux tomcat怎么启动服务
  • windows8用的人少
  • win7系统出现蓝屏
  • 如何解决win10系统重置卡在62
  • windows下用CMD调用COM口
  • jquery prevall
  • itertools.permutations
  • node.js ajax
  • js动态执行代码
  • jquery选择器的作用
  • 广东省为什么电不够用
  • 最新印花税税目表2022
  • 企业租赁房屋需要预缴增值税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设