(十一)vue实例的生命周期

1)概念

每个 Vue 实例在被创建时都要经过一系列的初始化过程,即生命周期阶段。

如 : 创建vue实例----》渲染实例—》更新vue实例----》销毁vue实例

然后在这个过程中会运行一些叫做生命周期钩子的函数,
这给了用户在不同阶段添加自己的代码的机会。

2)生命周期钩子函数

1.准备创建实例 beforeCreate
2.创建实例
3.创建实例完成 created
4.准备渲染实例 beforeMount
5.渲染实例
6.渲染实例完成 mounted
7.准备更新实例 beforeUpdate
8.更新实例
9.更新实例完成 updated
10.准备销毁实例 beforeDestroy
11.销毁实例
12.销毁实例完成 destroyed

备注:
销毁实例方法: 实例名.$destroy()。
一个实例被销毁后,会清理它与其它实例的连接,解绑它的全部指令及事件监听属性。

3)基本演示

比如在创建实例之前有个准备阶段:这里就会运行一个生命周期钩子函数

  • beforeCreate

这个钩子函数会在vue实例创建前执行,我们可以把实例创建前的一些初始化操作写在这个函数里面。
在这里插入图片描述
备注:从上我们可以知道,对于生命周期的钩子函数,我们应该写在vue实例的最外层,和data同级。

4)完整演示

直接把此代码放入浏览器里面运行一遍查看效果

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<style>
#app * {
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div id="app">
{{message}}
</div>
<script>
let vueApp = new Vue({
el: "#app",
data: {
message: 'Vue的生命周期'
},
beforeCreate: function () {
var mes = `
beforeCreate :vue实例创建前的准备阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
`
alert(mes); console.info(mes);
}, created: function () {
var mes = `
created :vue实例创建完成后的阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}, beforeMount: function () {
var mes = `
beforeMount :vue实例渲染前的准备阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ;
alert(mes); console.info(mes);
}, mounted: function () {
var mes = `
mounted :vue实例渲染完成后的阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}, beforeUpdate: function () {
var mes = `
beforeUpdate :vue实例更新前的准备阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}, updated: function () {
var mes = `
updated :vue实例更新完成的阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}, beforeDestroy: function () {
var mes = `
beforeDestroy :vue实例销毁前的准备阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}, destroyed: function () {
var mes = `
destroyed :vue实例销毁完成的阶段:【
el: ${this.$el},
data: ${this.$data},
message: ${this.message},】
` ; alert(mes); console.info(mes);
}
});
</script>
</body>
</html>

5)各钩子函数的说明

1.实例如下对象

let vueApp = new Vue({
el: "#app",
data: {
message: 'Vue的生命周期'
}
});

在此应用运行起来了的过程中,其各个阶段如下

  • .beforeCreate
    这是在vue实例创建之前的钩子函数,在这个阶段,由于vue实例还未创建,所以实例里面的东西是undefined。
    在这里插入图片描述

  • created
    这是在vue实例创建完成后的钩子函数,在这个阶段,由于vue实例已经创建,所以实例里面的data,message都初始化成功了,不再是undefined.但是还没有去绑定dom节点,所以el属性为undefined。
    在这里插入图片描述

  • beforeMount
    这是在vue实例创建后,渲染前的钩子函数,在这个阶段,由于vue实例即将要渲染,
    所以el属性为已经被赋值成了节点对象。不再是undefined,但是还没有渲染进网页
    在这里插入图片描述

  • mounted
    这是在vue实例渲染完成后的钩子函数,在这个阶段,网页已经渲染完成
    在这里插入图片描述

提示
beforeCreate , reated , beforeMount , mounted 这几个生命周期钩子函数从运行网页到渲染完成这个过程会执行,不需要我们显式的去触发。
但是对于下面的几个钩子函数就需要显式的行为来触发,才能执行了。
beforeUpdate , updated , beforeDestroy , destroy.

  • beforeUpdate
    这是在vue实例被我们显式的修改了,但是还没正式的渲染进网页时,才会触发的钩子函数。
    在这里插入图片描述
  • updated
    这是实例对象被修改导致页面也修改后渲染的才会触发的构造函数
    在这里插入图片描述
  • beforeDestroy
    这是实例对象执行了销毁操作,但是还没有真正销毁时触发的钩子函数。
    在这里插入图片描述
  • destroyed
    这是实例对象真正销毁时触发的钩子函数。在这里我们可以做一善后的工作。

注意:
执行了实例名.$destroy() 方法会完全销毁一个实例。会清理它与其它实例的连接,解绑它的全部指令及事件监听属性。
实例销毁后,对象还存在,但是已经不是和视图绑定的vm了。任何修改都无法触动视图的变化。
在这里插入图片描述

请牢记四个单词: create , mount ,update ,destroy ,记住这几个单词就能明白并写出所有的声明周期了。

声明周期图示
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值