一起来学习Vue的生命周期
生命周期
生命周期的简单介绍
1.生命周期又叫做:生命周期回调函数、生命周期函数、生命周期钩子。
2.生命周期是:Vue在关键时刻帮我们调用的一些特殊名称的函数。
3.生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。
4.生命周期函数中的this指向是vm 或 组件实例对象。
在Vue官网教学中,Vue实例=>实例生命周期钩子中列举了8个生命周期函数
分别是:
1.beforeCreate()
2.created()
3.beforeMount()
4.mounted()(重点)
5.beforeUpdate()
6.updated()
7.beforeDestroy() (重点)
8.destroyed()
这八个生命周期函数涵盖了Vue实例从创建到销毁的过程即创建之前、创建完成、挂载之前、挂载完成、更新之前、更新完成、销毁之前、销毁完成。
beforeCreate与created
beforeCreate()
当使用 beforeCreate时,由于还没完成创建,因此无法通过vm访问到data中的数据、methods中的方法。
created()
当使用 created时,由于已经完成了创建,因此可以通过vm访问到data中的数据、methods中的方法。
beforeMount与mounted
beforeMount()
当使用 beforeMount时,由于还未完成挂载,因此此时页面呈现的内容都是未经Vue编译的DOM结构,并且在此时对DOM的所有操作最终都不奏效。不奏效的原因是当运行到mounted时,系统会将内存中的虚拟DOM转为真实DOM插入页面,因此修改的内容会被覆盖。
mounted()(重要)
当使用mounted时,此时已经完成挂载,页面呈现的内容会变成经过Vue编译的DOM,同时此时对DOM的操作均有效。当运行到这时,初始化的过程就结束了。一般在此进行如下操作:开启定时器、发送网络请求、订阅消息等初始化操作。
beforeUpdate与updated
数据发生变化时,会使用beforeUpdate与updated进行更新
beforeUpdate()
当使用beforeUpdate时,此时还未更新完毕,数据已经成功获取,但是还未展示到页面中。因此会存在以下现象,数据是新数据但是页面中显示的是旧数据。此时页面与数据尚未保持同步。
updated()
当使用updated时,此时已经更新完毕。这时候数据是新数据,页面中显示的也是新数据。此时页面与数据保持同步。
beforeDestroy与destroyed
当Vue实例要销毁的时候,会使用beforeDestroy与destroyed进行销毁
beforeDestroy()(重要)
当使用beforeDestroy时,此时Vue实例还未完全销毁,vm中的 data、methods、指令等还都处于可用状态。但此时修改数据已经不会对页面进行更新。通常在此阶段进行关闭定时器、取消订阅信息、解绑自定义事件等操作。在这8个生命周期函数中,beforeDestroy与mounted使用较多。
destroyed()
当使用destroyed时,Vue实例彻底销毁。