33 Vue的生命周期之Vue实例的生命周期

在上一章,我们探讨了 Vuex 状态管理的重要概念以及如何使用模块化 Vuex 来管理大型应用的状态。接下来,我们将深入了解 Vue 实例的生命周期,学习它的生命周期钩子,以及这些钩子在实际开发中的应用。

Vue实例的生命周期概述

Vue 实例一旦被创建,就会经历一系列的状态变化,这些变化统称为“生命周期”。我们可以将 Vue 实例的生命周期划分为以下几个主要阶段:

  1. 创建阶段:包括 beforeCreatecreated
  2. 挂载阶段:包括 beforeMountmounted
  3. 更新阶段:包括 beforeUpdateupdated
  4. 销毁阶段:包括 beforeDestroydestroyed

每个阶段都有特定的生命周期钩子(Lifecycle Hooks),我们可以在这些钩子中执行特定的代码。

生命周期钩子的详细介绍

创建阶段

  • beforeCreate: 在实例初始化之后,数据观测和事件/侦听器的配置之前被调用。
  • created: 在实例创建完成后被立即调用,此时数据已观测,事件/侦听器也已经被设置。

示例

1
2
3
4
5
6
7
8
9
10
11
new Vue({
data: {
message: 'Hello Vue!'
},
beforeCreate() {
console.log('实例即将创建');
},
created() {
console.log('实例已创建:', this.message);
}
});

挂载阶段

  • beforeMount: 在挂载开始之前被调用,相关的 render 函数首次被调用。
  • mounted: 实例被挂载之后调用,此时可以访问到 DOM。

示例

1
2
3
4
5
6
7
8
9
10
11
12
new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
beforeMount() {
console.log('挂载开始');
},
mounted() {
console.log('挂载完成,DOM已生成:', this.$el);
}
});

更新阶段

  • beforeUpdate: 数据更新时被调用,此时组件的 DOM 尚未更新。
  • updated: 数据变化导致的 DOM 更新完成后被调用。

示例

1
2
3
4
5
6
7
8
9
10
11
12
new Vue({
el: '#app',
data: {
count: 0
},
beforeUpdate() {
console.log('数据即将更新');
},
updated() {
console.log('数据已更新,新的 count:', this.count);
}
});

销毁阶段

  • beforeDestroy: 实例销毁之前调用,此时实例仍然是可用的。
  • destroyed: 实例已经被销毁,此时所有的事件监听器和子实例都会被解绑。

示例

1
2
3
4
5
6
7
8
9
10
11
12
new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
beforeDestroy() {
console.log('实例即将销毁');
},
destroyed() {
console.log('实例已销毁');
}
});

生命周期函数的用途

生命周期钩子可以帮助我们在合适的时机做一些特定的事情。例如:

  • created 中进行数据的初始化请求。
  • mounted 中进行 DOM 操作或 API 调用。
  • updated 中响应数据更新后的变化。
  • beforeDestroy 中清理定时器或事件监听的回调。

实际案例

下面我们将通过一个简单的示例,演示如何在组件中使用这些生命周期钩子。

示例:计数器组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Vue.component('counter', {
template: `
<div>
<p>当前计数: {{ count }}</p>
<button @click="increment">增加</button>
</div>
`,
data() {
return {
count: 0
};
},
beforeCreate() {
console.log('Counter 组件即将创建');
},
created() {
console.log('Counter 组件已创建');
},
beforeMount() {
console.log('Counter 组件即将挂载');
},
mounted() {
console.log('Counter 组件已挂载');
},
beforeUpdate() {
console.log('Counter 组件数据即将更新');
},
updated() {
console.log('Counter 组件数据已更新');
},
beforeDestroy() {
console.log('Counter 组件即将销毁');
},
destroyed() {
console.log('Counter 组件已销毁');
},
methods: {
increment() {
this.count++;
}
}
});

// 创建 Vue 实例
new Vue({
el: '#app'
});

在这个示例中,我们定义了一个简单的计数器组件。在每一个生命周期钩子中,我们打印出当前的状态。运行应用后,你会看到控制台中输出的生命周期日志,这有助于理解 Vue 实例的实际运行情况。

总结

通过本章的学习,我们了解了 Vue 实例的生命周期及其各个阶段的钩子。掌握这些钩子在实际开发中极为重要,因为它们决定了何时进行初始化、数据获取、DOM 操作和清理工作等。首先,我们可以在不同的生命周期阶段执行相应的逻辑,为构建高效、响应式的应用提供支持。

在下一章中,我们将深入探讨生命周期钩子的使用,了解如何利用这些钩子改善我们的组件逻辑和性能。先行的准备工作会使我们的 vue 组件更加健壮和灵活。

33 Vue的生命周期之Vue实例的生命周期

https://zglg.work/vue-zero/33/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论