(Vue)组件间的亲密旅程:一场父子组件的创意大冒险

大家好,欢迎来到Vue组件的执行顺序大揭秘!在这个令人兴奋的旅程中,我们将深入探讨父组件和子组件的加载、更新和销毁过程,就像是一场充满惊奇的游乐园之旅,让我们一起开启吧!

完整的流程

首先,简明扼要的,让我先给出一个流程表来让大家更加好的去理解

父组件 子组件
加载渲染阶段 加载渲染阶段
beforeCreate
created
beforeMount
beforeCreate
created
beforeMount
mounted
mounted
更新过程 更新过程
beforeUpdate
beforeUpdate
update
update
销毁过程 销毁过程
beforeDestroy
beforeDestroy
destoryed
destoryed

加载渲染过程:开启父子组件的合奏

1. 父组件 beforeCreate - 准备阶段

在这个阶段,父组件正在为即将到来的盛大演出做准备。这时候,它们像一支即将上场的乐队,悄悄调试自己的乐器,为了保证演出的完美开头。

2. 父组件 created - 音乐奏响

演出正式开始!父组件在这一刻诞生,就像乐队演奏的第一个音符,充满了活力和潜力。这时候,父组件宣告自己准备好了,接下来是什么呢?是与子组件的默契合作!

3. 父组件 beforeMount - 舞台布置

在这个阶段,父组件为自己搭建了一个舞台,为即将登场的子组件创造了一个独特而舒适的环境。这就像是舞台灯光的调试,确保演员能够在最佳状态下亮相。

4. 子组件 beforeCreate - 小演员入场

这时候,子组件以独特的个性进入舞台。虽然只是预备阶段,但子组件已经在背后做好了一些准备工作,开始渐渐展露自己的特色。

5. 子组件 created - 小演员成形

子组件正式诞生!就像小演员在后台换好戏服一样,子组件已经准备好了迎接观众的一切。此时,观众(也就是我们)可以感受到一个全新的角色即将登场。

6. 子组件 beforeMount - 小演员上台

子组件准备好了,现在是时候上台演出了!在这个阶段,子组件在舞台上找到了自己的位置,开始向观众展示自己独特的魅力。

7. 子组件 mounted - 小演员耀眼登场

子组件终于正式登场,这时候它已经在舞台上展示出了自己的所有亮点。这就像是一场华丽的开场表演,让观众们感到惊艳不已。

8. 父组件 mounted - 合奏进行时

最后,父组件也隆重登场!在这个阶段,整个组件家族达到了巅峰状态,父子组件的合奏在观众面前展开,带来了一场无比精彩的视听盛宴。

更新过程:父子组件的互动升级

1. 父组件 beforeUpdate - 更新前的静默

在这个阶段,父组件在更新前先沉默片刻,就像一位思考下一步演奏的音乐家。这时候,整个舞台进入了一片安静,观众们好奇地等待着下一幕的开始。

2. 子组件 beforeUpdate - 子组件的回应

子组件也加入了这场静默,开始思考自己的更新策略。这时候,观众们仿佛听到了一阵微弱的悠扬旋律,预示着更新即将到来。

3. 子组件 updated - 小演员的精进

更新完成后,子组件展示出更为精湛的技艺,就像小演员通过不断的排练和修炼,让自己在舞台上更加出色。观众们对于这个小演员的成长感到由衷的喜悦。

4. 父组件 updated - 合奏再启

最后,父组件也完成了更新,父子组件的合奏再次奏响。这时候,观众们可以感受到整个演出更加流畅和协调,仿佛是一场美妙的音乐盛宴。

销毁过程:告别的交响乐章

1. 父组件 beforeDestroy - 道别前的默契

在这个阶段,父组件即将告别,但在离去前,它与子组件默契地交流,就像是一场感人的告别演出。这时候,整个舞台洋溢着深深的情感。

2. 子组件 beforeDestroy - 小演员的告别

子组件也准备告别,但不是终结,而是为了迎接新的挑战。在告别的过程中,子组件展示出了一种成熟和坚定的姿态,让观众们感慨不已。

3. 子组件 destroyed - 小演员的谢幕

子组件正式告别舞台,观众们为这位小演员送上热烈的掌声。这时候,我们可以感受到一种别样的骄傲,看着这个小演员离开舞台,知道他已经准备好面对新的挑战。

4. 父组件 destroyed - 合奏的终章

最后,父组件也完成了自己的告别,整个合奏达到了完美的终章。观众们在掌声中为这场华美的演出划上圆满的句号,感受到了一场别开生面的Vue组件之旅的完美谢幕。

每个阶段的代码

以下是对应每个阶段的一些示例代码:

html 复制代码
<!-- 父组件模板 -->
<template>
  <div>
    <p>父组件内容</p>
    <child-component></child-component>
  </div>
</template>

<script>
export default {
  beforeCreate() {
    console.log('父组件 beforeCreate');
  },
  created() {
    console.log('父组件 created');
  },
  beforeMount() {
    console.log('父组件 beforeMount');
  },
  mounted() {
    console.log('父组件 mounted');
  },
  beforeUpdate() {
    console.log('父组件 beforeUpdate');
  },
  updated() {
    console.log('父组件 updated');
  },
  beforeDestroy() {
    console.log('父组件 beforeDestroy');
  },
  destroyed() {
    console.log('父组件 destroyed');
  }
};
</script>
html 复制代码
<!-- 子组件模板 -->
<template>
  <div>
    <p>子组件内容</p>
  </div>
</template>

<script>
export default {
  beforeCreate() {
    console.log('子组件 beforeCreate');
  },
  created() {
    console.log('子组件 created');
  },
  beforeMount() {
    console.log('子组件 beforeMount');
  },
  mounted() {
    console.log('子组件 mounted');
  },
  beforeUpdate() {
    console.log('子组件 beforeUpdate');
  },
  updated() {
    console.log('子组件 updated');
  },
  beforeDestroy() {
    console.log('子组件 beforeDestroy');
  },
  destroyed() {
    console.log('子组件 destroyed');
  }
};
</script>

这些代码片段包括了父组件和子组件的生命周期钩子函数,并在控制台输出对应的生命周期阶段。你可以将这些代码插入到你的Vue项目中,以便在开发环境中查看控制台的输出,更好地理解Vue组件的执行顺序。

注意事项:

  1. 避免异步操作在 beforeCreate 和 created 钩子中: 由于这两个阶段在Vue实例尚未完全初始化,因此避免在这里进行异步操作,以免导致意外行为。
  2. 在 beforeDestroy 钩子中清理定时器和事件监听器: 确保在组件销毁前清理掉所有可能导致内存泄漏的资源,如定时器和事件监听器。
  3. 谨慎使用 beforeUpdate 和 updated 钩子: 避免在这两个阶段进行大量计算,以免影响性能。如果有性能敏感的操作,考虑使用 watchcomputed 属性。
  4. 了解生命周期钩子的触发时机: 了解每个生命周期钩子函数何时触发,以便更好地控制组件行为。

应用场景:

  1. beforeCreate 和 created: 适用于执行一些初始化操作,如设置默认数据或获取异步数据。
  2. beforeMount 和 mounted: 适用于DOM操作,例如获取元素尺寸、初始化第三方库(如图表库或地图库)等。
  3. beforeUpdate 和 updated: 适用于响应数据变化时的操作,例如更新图表、动态刷新数据等。
  4. beforeDestroy 和 destroyed: 适用于清理工作,如取消定时器、解绑事件监听器、释放资源等。
  5. 使用 keep-alive 组件时注意 beforeRouteEnter 和 beforeRouteLeave 钩子: 用于处理缓存组件时的进入和离开场景,例如在进入组件时进行特定的初始化操作,在离开组件时进行清理工作。
  6. 使用 activated 和 deactivated 钩子: 适用于 keep-alive 组件,用于在组件被激活(从缓存中加载)和停用(缓存中移除)时执行特定的操作。

总的来说,Vue组件的执行顺序就像是一场音乐会,父子组件之间的互动就像是音符间的默契。希望通过这篇文章,你能更好地理解Vue组件之间的执行流程,同时也能感受到编程的乐趣和创意的无限可能性。让我们一起奏响更多美妙的代码之歌吧!

相关推荐
GDAL4 分钟前
vue3入门教程:ref函数
前端·vue.js·elementui
GISer_Jing13 分钟前
Vue3状态管理——Pinia
前端·javascript·vue.js
好开心3328 分钟前
axios的使用
开发语言·前端·javascript·前端框架·html
Domain-zhuo37 分钟前
Git常用命令
前端·git·gitee·github·gitea·gitcode
开发者每周简报43 分钟前
求职市场变化
人工智能·面试·职场和发展
菜根Sec1 小时前
XSS跨站脚本攻击漏洞练习
前端·xss
web150854159351 小时前
vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题
vue.js·阿里云·webrtc
m0_748257181 小时前
Spring Boot FileUpLoad and Interceptor(文件上传和拦截器,Web入门知识)
前端·spring boot·后端
桃园码工2 小时前
15_HTML5 表单属性 --[HTML5 API 学习之旅]
前端·html5·表单属性
百万蹄蹄向前冲2 小时前
2024不一样的VUE3期末考查
前端·javascript·程序员