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

  • 抖音小翅膀符号怎么打出来的(抖音名翅膀符号)

    抖音小翅膀符号怎么打出来的(抖音名翅膀符号)

  • 红米k30可以升级miui12吗(红米K30可以升级内存吗)

    红米k30可以升级miui12吗(红米K30可以升级内存吗)

  • 标压插槽可以插低压内存条吗(标压插槽插低压内存条)

    标压插槽可以插低压内存条吗(标压插槽插低压内存条)

  • 华为nova7se返回键怎么设置(华为nova7se返回键设置)

    华为nova7se返回键怎么设置(华为nova7se返回键设置)

  • 淘宝入会员对自己有什么影响(淘宝入会员有什么坏处吗)

    淘宝入会员对自己有什么影响(淘宝入会员有什么坏处吗)

  • 京东备件库是什么意思(京东备件库是什么为什么便宜)

    京东备件库是什么意思(京东备件库是什么为什么便宜)

  • 买家号被降权能恢复吗(买家号被降权了)

    买家号被降权能恢复吗(买家号被降权了)

  • a1474是ipad什么型号尺寸(a1474是ipad什么型号买壳)

    a1474是ipad什么型号尺寸(a1474是ipad什么型号买壳)

  • 虾米音乐电脑怎么下歌(虾米音乐下载到电脑)

    虾米音乐电脑怎么下歌(虾米音乐下载到电脑)

  • 小米cc9有无线充电功能吗(小米cc9带无线充电么)

    小米cc9有无线充电功能吗(小米cc9带无线充电么)

  • 如何不让手机屏幕转动(如何不让手机屏幕自动旋转苹果)

    如何不让手机屏幕转动(如何不让手机屏幕自动旋转苹果)

  • 收到unknown短信(收到uncon之后干嘛)

    收到unknown短信(收到uncon之后干嘛)

  • 小红书怎么不能下载了(小红书怎么不能复制粘贴)

    小红书怎么不能下载了(小红书怎么不能复制粘贴)

  • 手机上的hd2怎么关(手机上面的hd2)

    手机上的hd2怎么关(手机上面的hd2)

  • 快手怎么开唱歌房间(快手怎么唱歌k歌)

    快手怎么开唱歌房间(快手怎么唱歌k歌)

  • 苹果11有3dtouch吗(苹果11手机有3dtouch功能吗)

    苹果11有3dtouch吗(苹果11手机有3dtouch功能吗)

  • 苹果退款要多久时间(苹果退款要多久到账)

    苹果退款要多久时间(苹果退款要多久到账)

  • 苹果可以隐藏软件吗(苹果可以隐藏软件的计算器)

    苹果可以隐藏软件吗(苹果可以隐藏软件的计算器)

  • 华为荣耀手机怎么设置天气(华为荣耀手机怎么设置屏幕返回键)

    华为荣耀手机怎么设置天气(华为荣耀手机怎么设置屏幕返回键)

  • 苹果xr和x手机壳通用吗(苹果xr手机壳跟x是不是一样的)

    苹果xr和x手机壳通用吗(苹果xr手机壳跟x是不是一样的)

  • qq群怎么@全体成员(qq群如何@全体)

    qq群怎么@全体成员(qq群如何@全体)

  • Linux下修改文件描述符的大小的方法(linux 文件修改)

    Linux下修改文件描述符的大小的方法(linux 文件修改)

  • Debian更换国内源解决安装软件速度慢问题并且卸载exim4服务(debian更换国内源教程)

    Debian更换国内源解决安装软件速度慢问题并且卸载exim4服务(debian更换国内源教程)

  • Fortify安装和使用教程(保姆级)-安装教程(fortify 安装)

    Fortify安装和使用教程(保姆级)-安装教程(fortify 安装)

  • 冲回多计提费用
  • 劳务费个人所得税由谁申报
  • 春节补贴是加还是减
  • 什么时候过路费是半价
  • 增值税普票可以开给个人吗
  • 代账公司需要做报表吗
  • 委托加工物资属于企业资产吗
  • 城市维护建设税减免税优惠政策
  • 房租租金收入都缴纳什么税金
  • 银行转账结算的方式有哪些
  • 其他资本公积属于
  • 临时售楼处要考虑消防吗
  • 费用退回怎么做账
  • 企业外购的无形资产摊销,可以加计扣除吗?
  • 研发设备的定义
  • 贷款公司收取服务费是诈骗吗
  • 出口货物免抵退税额城市维护建设税
  • 开票未收到款会计分录
  • 增值税普通发票和专用发票有什么区别
  • 一般纳税人所得税率是多少
  • 商品房所有者是什么
  • 发票申请需要多久
  • 小微企业减免税代码是多少
  • 进项票入账但是不抵扣怎么做账
  • 合同的印花税税率
  • 印花税的购销合同改成买卖合同了吗?
  • 降低增值税税率对消费者的影响有哪些
  • 电子承兑转让怎么撤销
  • 最新企业会计准则
  • 如何解决无线网络连接问题
  • mac如何强制退出全屏
  • 王者荣耀中孙尚香怎么玩
  • 入库单做账是预付款还是应付款
  • 系统搜索力
  • win10怎么设置硬盘为第一启动项
  • PHP:Memcached::appendByKey()的用法_Memcached类
  • 税收风险的含义
  • php技巧
  • 前端布局flex
  • php字符串转换
  • 文化体育用品批发城有哪些
  • 命令执行函数echo
  • 不发工资可以交五险一金吗
  • 印花税契税入固定资产吗
  • seata1.3.0配置
  • 软件服务费可以全额抵扣吗?
  • 接受投资者投入的无形资产其入账价值是
  • 小规模纳税人是什么意思
  • 小规模公司购买汽车会计分录
  • 税收滞纳金能不能超过税款
  • 航天信息的发票以什么形式导入开票信息
  • 固定资产出售账面价值计入什么科目
  • 别的公司代付货款
  • 彩票扣税吗
  • 事业单位公务卡额度多少
  • 专项应付款贷方余额表示
  • 发票入账但是没付款有什么税务风险
  • 购买金税盘的分录
  • 企业办理土地证需要哪些资料
  • cmd命令行窗口快捷键
  • deepin 2014系统下安装mysql数据库的方法步骤
  • 新一代win10
  • window怎么样
  • 怎么配置命令
  • spyagent4.exe - spyagent4是什么进程
  • flash是什么文件夹
  • win7电脑显示器颜色不正常怎么办
  • window8输入法不见了
  • 桌面预览怎么设置
  • js表单序列化
  • vue3.0diff
  • unity游戏开发简历
  • shell命令怎么用
  • 去伪存真栏目为什么取消啦
  • jquery日期选择器
  • 安卓中五种常见布局的特点
  • 土地闲置是否需要缴纳土地使用税
  • 湖北省国税务局钟敏副局长
  • 江苏叉车考试
  • 佛山市地方税务局与国家税务局合并没有
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设