位置: 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)

  • 抖音没有关注的人可以看到浏览记录吗(抖音没有关注的直播间还能找到吗)

    抖音没有关注的人可以看到浏览记录吗(抖音没有关注的直播间还能找到吗)

  • 荣耀50支持OTG吗(荣耀50支持typec)

    荣耀50支持OTG吗(荣耀50支持typec)

  • 快手作品为什么上不了同城(快手作品为什么仅展示部分浏览记录)

    快手作品为什么上不了同城(快手作品为什么仅展示部分浏览记录)

  • 显示未接通什么情况

    显示未接通什么情况

  • 平板电脑可以QQ分享屏幕吗(平板电脑可以取代笔记本电脑吗)

    平板电脑可以QQ分享屏幕吗(平板电脑可以取代笔记本电脑吗)

  • 华为mate30怎么扫描图片文字(华为mate30怎么扫描图片成电子版)

    华为mate30怎么扫描图片文字(华为mate30怎么扫描图片成电子版)

  • ipad充不进去电一直停在1%(ipad充不进去电是怎么回事)

    ipad充不进去电一直停在1%(ipad充不进去电是怎么回事)

  • 淘宝已处理的评价是怎么回事(淘宝已处理的评价多久清零)

    淘宝已处理的评价是怎么回事(淘宝已处理的评价多久清零)

  • 为什么微信只能发15秒视频(为什么微信只能收到近三天的消息)

    为什么微信只能发15秒视频(为什么微信只能收到近三天的消息)

  • 淘宝资金冻结需要多久(淘宝冻结资金一般冻结多久)

    淘宝资金冻结需要多久(淘宝冻结资金一般冻结多久)

  • 小米mix alpha开售时间(小米mix alpha价格真的是19999吗?)

    小米mix alpha开售时间(小米mix alpha价格真的是19999吗?)

  • 电脑供电不足会出现什么情况(电脑供电不足会卡顿吗)

    电脑供电不足会出现什么情况(电脑供电不足会卡顿吗)

  • autocad属于应用软件吗(autocad的应用范围)

    autocad属于应用软件吗(autocad的应用范围)

  • 抖音扫什么图案解锁彩蛋(抖音扫图案解锁彩蛋2020)

    抖音扫什么图案解锁彩蛋(抖音扫图案解锁彩蛋2020)

  • lcd和ips屏的区别(ips屏幕哪个好)

    lcd和ips屏的区别(ips屏幕哪个好)

  • 苹果手机的表情在安卓的手机里能看到吗(苹果手机的表情包在哪里)

    苹果手机的表情在安卓的手机里能看到吗(苹果手机的表情包在哪里)

  • 拍照模糊是什么原因(拍照模糊是什么气体)

    拍照模糊是什么原因(拍照模糊是什么气体)

  • word高级在哪里(word高级设置在哪里)

    word高级在哪里(word高级设置在哪里)

  • 手电筒在手机哪里打开(手电筒在手机哪里设置)

    手电筒在手机哪里打开(手电筒在手机哪里设置)

  • 钉钉怎么看加班总数(钉钉怎么看加班调休)

    钉钉怎么看加班总数(钉钉怎么看加班调休)

  • 剪映怎么加本地音乐(剪映怎么加本地录音进去)

    剪映怎么加本地音乐(剪映怎么加本地录音进去)

  • word三线表格怎么求和(word三线表格怎么制作怎么有虚线)

    word三线表格怎么求和(word三线表格怎么制作怎么有虚线)

  • 淘宝超过20天怎么退货(淘宝过了20天还能售后吗?)

    淘宝超过20天怎么退货(淘宝过了20天还能售后吗?)

  • 小米手机msa是什么(miuimsa是什么意思)

    小米手机msa是什么(miuimsa是什么意思)

  • vivoiqoo屏幕是三星吗(vivoiqoo屏幕是三星屏吗)

    vivoiqoo屏幕是三星吗(vivoiqoo屏幕是三星屏吗)

  • iphone8支持nfc吗(苹果8是否支持nfc)

    iphone8支持nfc吗(苹果8是否支持nfc)

  • 无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv(卷积核步长公式)

    无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv(卷积核步长公式)

  • 税局退个税手续费税率
  • 确认递延所得税资产会计处理
  • 怎么修改金税盘登录密码
  • 出口货物退(免)税管理办法
  • 周转材料低值易耗品的会计处理
  • 采购材料入库会计分录怎么写的
  • 普通发票税额没有打印全可以用么
  • 建筑工程查帐征收税
  • 工会经费的所得税怎么算
  • 产品质量赔款的账务处理
  • 税率与征收率有关系吗
  • 工程款开票备注栏
  • 个人买卖二手房交什么税
  • 多付工资计入哪个科目
  • 分公司收到总公司拨款怎么做分录
  • 员工的水电费计入什么科目
  • 一个月的销售额
  • 个体工商户做账可以做工资吗
  • 什么样的发票需要交税
  • 普通发票没有进账怎么办
  • 电脑开机硬盘自检怎么回事
  • 票据质押出票如何操作
  • 授课培训公司免责协议
  • 一般纳税人税金怎么算
  • 盒装cpu和散装
  • pc direct
  • lsalss.exe
  • 报销没有发票如何处理做凭证
  • 凭证导致账簿错误
  • 成本法的优点是计算较为简便,缺点是
  • 社保申报已扣款还能作废吗
  • vue中遇到的问题
  • vue角色管理
  • html5简单吗
  • 可解释深度学习:从感受野到深度学习的三大基本任务:图像分类,语义分割,目标检测,让你真正理解深度学习
  • php+web
  • 增值税发票复印件可以入账吗与原件一致
  • discuz安装使用教程
  • php hash_hmac
  • 销售旧货怎么填写申报表
  • 公司账户转账给个人要交税吗
  • 典当公司收到房款怎么办
  • 受雇于两家公司补税怎么算
  • 简易征收预缴税率怎么算
  • 退回多交的所得税抵欠税怎么做账
  • 出售资产时递延所得税转回是全部收入吗
  • 递延资产放在资产负债表哪里
  • 销货清单和发票金额不一致
  • 公司老板个人卡收支公司业务属于什么行为
  • 劳务费打到私人账户
  • 进项大于销项的原因
  • 商业企业的营业成本包括
  • 借款利息如何记账
  • 研发费加计扣除申报表怎么填
  • 集团公司对子公司总经理的绩效考核
  • vb.net with
  • rhel7.5重置密码
  • 方正电脑升级
  • windowsxp网页打不开怎么办
  • WFXSVC.EXE - WFXSVC是什么进程
  • win7无法正常关机
  • win7桌面右下角输入法图标不见了
  • windows7家长控制
  • 微软报错是什么意思
  • win8怎么进去安全系统
  • win7右下角时间怎么显示年月日
  • excel嵌入图片变成代码怎么办
  • js代码规范
  • unity游戏开发的技术路线有哪些
  • me分析方法
  • css全局声明
  • python数据可视化课后题答案
  • javascript 日期
  • 增值税的进项税额转出是什么意思
  • 税务要求实名认证
  • 吉林省工伤保险咨询电话
  • 网上申报增值税纳税申报表怎么填写
  • 企业销售旧货增值税税率
  • 未办理税务登记取得专票抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设