位置: IT常识 - 正文

Vue父子组件生命周期执行顺序是什么?(vue父子组件生命周期钩子执行顺序)

编辑:rootadmin
Vue父子组件生命周期执行顺序是什么?

推荐整理分享Vue父子组件生命周期执行顺序是什么?(vue父子组件生命周期钩子执行顺序),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue父子组件生命周期执行顺序activated,vue父子组件生命周期钩子函数执行顺序,vue父子组件生命周期钩子执行顺序,vue父子组件生命周期执行顺序的原理,vue父子组件生命周期函数,vue父子组件生命周期执行顺序,vue父子组件生命周期执行顺序,vue父子组件生命周期执行顺序,内容如对您有帮助,希望把文章链接给更多的朋友!

执行顺序:父组件先创建,然后子组件创建;子组件先挂载,然后父组件挂载,即“父beforeCreate-> 父create -> 子beforeCreate-> 子created -> 子mounted -> 父mounted”。

在单一组件中,钩子的执行顺序是beforeCreate-> created -> mounted->… ->destroyed,但当父子组件嵌套时,父组件和子组件各拥有各自独立的钩子函数,这些父子组件的这些钩子是如何交融执行,且执行顺序又是怎样的呢?

父子组件生命周期执行顺序

组件,分别在他们的钩子函数中打印日志,观察执行顺序。得到的结果如图所示,父组件先创建,然后子组件创建;子组件先挂载,然后父组件挂载。

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

子组件挂载完成后,父组件还未挂载。所以组件数据回显的时候,在父组件mounted中获取api的数据,子组件的mounted是拿不到的。

仔细看看父子组件生命周期钩子的执行顺序,会发现created这个钩子是按照从外内顺序执行,所以父子组件传递接口数据的解决方案是:

在created中发起请求获取数据,依次在子组件的created或者mounted中会接收到这个数据。

加载渲染过程

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

销毁过程

父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

常用钩子简易版

父create->子created->子mounted->父mounted补充单一组件钩子执行顺序

activated, deactivated 是组件keep-alive时独有的钩子

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

activated

Vue父子组件生命周期执行顺序是什么?(vue父子组件生命周期钩子执行顺序)

deactivated

beforeDestroy

destroyed

errorCaptured

总结

beforeCreate执行时:data和el均未初始化,值为undefined

created执行时:Vue 实例观察的数据对象data已经配置好,已经可以得到data的值,但Vue 实例使用的根 DOM 元素el还未初始化

beforeMount执行时:data和el均已经初始化,但此时el并没有渲染进数据,el的值为“虚拟”的元素节点

mounted执行时:此时el已经渲染完成并挂载到实例上

beforeUpdate和updated触发时,el中的数据都已经渲染完成,但只有updated钩子被调用时候,组件dom才被更新。

在created钩子中可以对data数据进行操作,这个时候可以进行数据请求将返回的数据赋给data

在mounted钩子对挂载的dom进行操作,此时,DOM已经被渲染到页面上。

虽然updated函数会在数据变化时被触发,但却不能准确的判断是那个属性值被改变,所以在实际情况中用computed或watch函数来监听属性的变化,并做一些其他的操作。

所有的生命周期钩子自动绑定 this 上下文到实例中,所以不能使用箭头函数来定义一个生命周期方法 (例如 created: () => this.fetchTodos()),会导致this指向父级。

在使用vue-router时有时需要使用来缓存组件状态,这个时候created钩子就不会被重复调用了,如果我们的子组件需要在每次加载或切换状态的时候进行某些操作,可以使用activated钩子触发。

父子组件的钩子并不会等待请求返回,请求是异步的,VUE设计也不能因为请求没有响应而不执行后面的钩子。所以,我们必须通过v-if来控制子组件钩子的执行时机.

注意:在父组件传递接口的数据给子组件时,一定要在子组件标签上加上v-if="传递的接口数据"

在父组件的created中发请求获取数据,通过prop传递给子组件。子组件在created或者mounted中拿父组件传递过来的数据 这样处理是有问题的。在父组件调用接口传递数据给子组件时,接口响应显然是异步的。这会导致无论你在父组件哪个钩子发请求,在子组件哪个钩子接收数据。都是取不到的。当子组件的mounted都执行完之后,此时可能父组件的请求才返回数据。会导致,从父组件传递给子组件的数据是undefined。

解决方法1:

在渲染子组件的时候加上一个条件,data1是父组件调用接口返回的数据。当有数据的时候在去渲染子组件。这样就会形成天然的阻塞。在父组件的created中的请求返回数据后,才会执行子组件的created,mounted。最后执行父组件的mounted。

<div class="test"><children v-if="data1" :data="data1" ></children></div>解决方法2:

在子组件中 watch 监听,父组件获取到值,这个值就会变化,自然是可以监听到的

watch:{data:{deep:true,handler:function(newVal,oldVal) {this.$nextTick(() => {this.data = newValthis.data = newVal.url ? newVal.url : ''})}},}

从父组件点击调用接口并显示子组件,子组件拿到数据并监听在watch中调用方法并显示。

以下为子组件,data1是从子组件传递过来的数据。在created,mounted中都拿不到父组件调用接口返回的data1。 只能watch监听data1。并调用方法渲染子组件。

props:['data1'],watch:{data1:{deep:true,handler:function(newVal,oldVal) {this.$nextTick(() => {this.data1 = newValthis.showData1(this.data1)})}},}
本文链接地址:https://www.jiuchutong.com/zhishi/298846.html 转载请保留说明!

上一篇:5.OpenCV图像拼接(opencv拼接图片)

下一篇:【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom)

  • 华为matepad11可以插电话卡吗(华为matepad11可以连接键盘吗)

    华为matepad11可以插电话卡吗(华为matepad11可以连接键盘吗)

  • 笔记本闪屏怎么办(笔记本闪屏怎么强制关机)

    笔记本闪屏怎么办(笔记本闪屏怎么强制关机)

  • 荣耀30pro有双扬声器吗(荣耀30pro+双扬声器是对称双扬吗)

    荣耀30pro有双扬声器吗(荣耀30pro+双扬声器是对称双扬吗)

  • 华为nova5pro微信怎样分身(华为nova5pro微信视频不提示)

    华为nova5pro微信怎样分身(华为nova5pro微信视频不提示)

  • iphone12是什么充电接口(iphone12是什么充电器口)

    iphone12是什么充电接口(iphone12是什么充电器口)

  • 微信投稿表情有收入吗(微信表情投稿成功后会有收入吗)

    微信投稿表情有收入吗(微信表情投稿成功后会有收入吗)

  • 手机没插电但显示充电(手机没有充电却显示充电怎么办)

    手机没插电但显示充电(手机没有充电却显示充电怎么办)

  • 11pro是不是双卡双待(iphone11pro 是双卡)

    11pro是不是双卡双待(iphone11pro 是双卡)

  • 漫游记录删了 其他手机登录还有吗(漫游记录删了电脑看得到吗)

    漫游记录删了 其他手机登录还有吗(漫游记录删了电脑看得到吗)

  • bilibili青少年模式提示怎么关闭(bilibili青少年模式强制关闭)

    bilibili青少年模式提示怎么关闭(bilibili青少年模式强制关闭)

  • 电脑左半边键盘失灵(电脑左半边键盘数字不显示)

    电脑左半边键盘失灵(电脑左半边键盘数字不显示)

  • 华为nova5pro双击亮屏怎么设置(华为nova5pro双击屏幕为什么不截屏)

    华为nova5pro双击亮屏怎么设置(华为nova5pro双击屏幕为什么不截屏)

  • 淘宝退款对卖家的影响(淘宝退款对卖家影响大吗)

    淘宝退款对卖家的影响(淘宝退款对卖家影响大吗)

  • 小米手环如何设置nfc(小米手环如何设置时间)

    小米手环如何设置nfc(小米手环如何设置时间)

  • 设置个人来电专属铃声(设置个人来电铃声)

    设置个人来电专属铃声(设置个人来电铃声)

  • 苹果怎么解除下载200兆(苹果怎么解除下载速度)

    苹果怎么解除下载200兆(苹果怎么解除下载速度)

  • 抖音屏幕上的字怎么流动的(抖音屏幕上的字怎么跟着音乐走)

    抖音屏幕上的字怎么流动的(抖音屏幕上的字怎么跟着音乐走)

  • 拼多多解除微信步骤(拼多多解除微信支付绑定)

    拼多多解除微信步骤(拼多多解除微信支付绑定)

  • 第一个计算机病毒出现时间(第一个计算机病毒名称)

    第一个计算机病毒出现时间(第一个计算机病毒名称)

  • 荣耀20有方舟编译器吗(荣耀20有方舟编号吗)

    荣耀20有方舟编译器吗(荣耀20有方舟编号吗)

  • 抖音直播怎么加音乐(抖音直播怎么加微信好友)

    抖音直播怎么加音乐(抖音直播怎么加微信好友)

  • 腾讯投电视连接失败(腾讯电视怎么投到电视上)

    腾讯投电视连接失败(腾讯电视怎么投到电视上)

  • 抖音照片切换速度怎么调(抖音照片切换速率怎么调)

    抖音照片切换速度怎么调(抖音照片切换速率怎么调)

  • 华为手机的扫描功能在哪里(华为手机的扫描仪)

    华为手机的扫描功能在哪里(华为手机的扫描仪)

  • 滴滴贡献分城市有哪些(滴滴服务分城市)

    滴滴贡献分城市有哪些(滴滴服务分城市)

  • boss直聘如何上传简历附件(boss直聘如何上传作品集)

    boss直聘如何上传简历附件(boss直聘如何上传作品集)

  • win10开机启动文件夹路径是什么(win10开机启动文件路径)

    win10开机启动文件夹路径是什么(win10开机启动文件路径)

  • 会计所得税公式怎么算
  • 退休职工能否扣医保
  • 房地产公司机构
  • 以股权入股要交税吗?
  • 增值税与普通发票的关系
  • 固定资产盘盈可计入
  • 房地产预交税金及附加要计提吗
  • 项目收入怎么算
  • 开具红字专用发票的情形
  • 金税盘提示离线开票时间超限深圳
  • 个体工商户税种认定的税目可以改吗
  • 会议费报销注意事项
  • 销售商品货款已预收
  • 购销合同印花税按70%
  • 制造业销售费用率多少合适
  • 企业年金基金投资管理人应当履行什么职责
  • 税控专用设备全额抵扣
  • 一般纳税人增值税结转账务处理
  • WIN10专业版永久激活
  • 鸿蒙系统怎么设置导航键
  • win7系统的系统配置里设置开机启动项
  • 税务发票盖章要求
  • 汽车维修费可以入账吗
  • 电脑店u盘装系统步骤
  • 纳税确有困难标准
  • php多线程怎么实现
  • PHP:Memcached::getResultCode()的用法_Memcached类
  • php注释的主要作用是什么?
  • ecshop app搭建
  • 小微企业应纳税所得额300万所得税
  • php模板引擎有哪些
  • php preg_match
  • php语言采用什么方式执行
  • 库存盘点差异分录
  • 共同开发产品
  • 企业预收账款缴纳个税吗
  • 给境外公司代扣代缴税款
  • LVS负载均衡群集的常用调度算法包含哪几种?
  • phpcms添加内容
  • 企业所得税营业收入怎么填
  • sql server基本知识
  • 超市购销和联营哪个好
  • 工资走公账有什么好处
  • 实收资本入账需要算设备安装费吗
  • 政府专项基金属于什么类
  • 一般纳税人房租租赁费的税率
  • 出包方式建造固定资产的成本包括
  • 来料加工账务处理流程
  • 已认证发票退回说明模板
  • 怎样申请开发票
  • 处置投资性房地产取得的收入属于企业收入吗
  • 体检收据可以入档案吗
  • 生产的半成品怎么做分录
  • 资产负债率比率
  • 行政单位负债类科目包括
  • 产品研发费用的计算公式
  • freebsd常用命令
  • 高效内存管理
  • wp7.8升级wp8
  • 电脑如何进入bios选择u盘启动
  • 微软手机
  • win7搜索选项
  • win7win10双硬盘双系统
  • win10 window
  • 笔记本win8为什么不能连无线
  • bzip2 bunzip2 bzcat参数使用
  • windows下合并分区
  • texturepackergui
  • javascript创建对象
  • 创建ubuntu
  • 详细说明什么是支撑
  • 结合mint-ui移动端下拉加载实践方法总结
  • python模块导入的几种方法
  • unity程序开发
  • unity find references in scene
  • android保存文件到本地
  • java script教程
  • 房地产开发企业会计制度
  • 粮仓计算公式
  • 个税专项扣除填报错误怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设