页面中有父子组件,生命周期顺序如何执行?(面试高频 一篇搞懂)

简介: 在实际开发中,一个页面经常会有父组件和子组件,那么在这个页面中,对于父子组件他们的生命周期又是如何执行的呢?看了一些网上的文章资料,竟然有些讲解写的是错误答案,带偏大家,所以在本文利用实践得出结论,带大家彻底搞懂这个知识点~

前言

之前一篇文章详细讲解了Vue2生命周期的过程 —> Vue2生命周期详解
在实际开发中,一个页面经常会有父组件和子组件,那么在这个页面中,对于父子组件他们的生命周期又是如何执行的呢?看了一些网上的文章资料,竟然有些讲解写的是错误答案,带偏大家,所以在本文利用实践得出结论,带大家彻底搞懂这个知识点~

创建子组件和父组件

这里我就写一个页面,在里面创建子组件和父组件

let item = Vue.component('item', {
   template: `<div>
           <h1>{{item}}</h1>
           <h2>{{num}}</h2>
       </div>`,
   data() {
       return {
           item: '我是子组件',
           num: 0
       }
   },
 }
let vm = new Vue({
  el: "#app",
  data: {
      name: 'casey',
      flag: true
  },
}
<div id="app">
    name={{name}}
    {{flag}}
    <button @click="flag = !flag">切换</button>
    <item v-if="flag"></item>
</div>

因为这里要讲子组件销毁过程,所以就简单写了一个按钮绑定flag,点击则子组件消失,执行销毁过程
下面就是在上面定义好的子组件和父组件中进行生命周期打印,这里就不展示了,直接看结果

页面创建过程生命周期

打开页面,查看打印
很显然,页面创建的过程是这样的:父组件挂载之前会去寻找子组件,然后执行子组件的创建前后和挂载前后,然后再执行父组件的挂载后

  1. 父创建前beforeCreate
  2. 父创建之后created
  3. 父挂载之前beforeMount
  4. 子创建前beforeCreate
  5. 子创建之后created
  6. 子挂载之前beforeMount
  7. 子挂载之后mounted
  8. 父挂载之后mounted

在这里插入图片描述

子组件销毁过程生命周期

点击页面按钮,执行子组件销毁,来看看页面生命周期如何执行:
子组件销毁的时候,会先执行父组件的更新前,再执行子组件的销毁前后,再执行父组件的更新后

  1. 父更新之前beforeUpdate
  2. 子销毁之前beforeDestroy
  3. 子销毁之后destroyed
  4. 父更新之后updated

在这里插入图片描述

最后

父子组件的问题会经常在开发中涉及到,掌握好它们生命周期的执行顺序才能把握好代码逻辑,有补充欢迎评论区指出,对你有帮助点赞支持下呀~

相关文章
|
16天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
6月前
|
Android开发 缓存 双11
android的基础ui组件,Android开发社招面试经验
android的基础ui组件,Android开发社招面试经验
android的基础ui组件,Android开发社招面试经验
|
6月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
3月前
|
JavaScript API
【Vue面试题十】、Vue中组件和插件有什么区别?
这篇文章阐述了Vue中组件和插件的区别,指出组件主要用于构建应用程序的业务模块,而插件用于增强Vue本身的功能,两者在编写形式、注册方式和使用场景上有所不同。
【Vue面试题十】、Vue中组件和插件有什么区别?
|
3月前
|
Java
面试官:OpenFeign十大可扩展组件你知道哪些?
这篇文章是关于OpenFeign框架的可扩展组件的讨论,作者分享了自己在面试中遇到的相关问题,并回顾了OpenFeign源码,列出了十大组件,包括日志、解码器、重试组件等,并展示了如何使用FeignClient注解和@EnableFeignClients注解来实现远程RPC调用。
面试官:OpenFeign十大可扩展组件你知道哪些?
|
3月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
3月前
|
Java 调度
【多线程面试题 五】、 介绍一下线程的生命周期
线程的生命周期包括新建、就绪、运行、阻塞和死亡状态,线程状态会根据线程的执行情况在这些状态之间转换。
【多线程面试题 五】、 介绍一下线程的生命周期
|
3月前
|
存储 JavaScript 容器
【Vue面试题十一】、Vue组件之间的通信方式都有哪些?
这篇文章介绍了Vue中组件间通信的8种方式,包括`props`传递、`$emit`事件触发、`ref`、`EventBus`、`$parent`或`$root`、`attrs`与`listeners`、`provide`与`inject`以及`Vuex`,以解决不同关系组件间的数据共享问题。
|
3月前
|
缓存 JavaScript
【Vue面试题五】、说说你对Vue生命周期的理解?
这篇文章详细阐述了Vue生命周期的各个阶段及其特点,并解释了在`created`和`mounted`生命周期钩子中请求数据的区别,指出`created`钩子适合于执行异步数据获取,而`mounted`钩子由于DOM已经渲染完成,适合于执行依赖于DOM的操作。
【Vue面试题五】、说说你对Vue生命周期的理解?
|
3月前
|
JavaScript 前端开发
面试题分享之封装一个弹框组件
面试题分享之封装一个弹框组件
33 0