根据 官方文档 中的描述,增加个人的理解和说明。这只是一个笔记。
至于什么是生命周期钩子,为什么会取钩子这个词,我也不甚理解。但对于生命周期而言,相信很多人都会知道大部分软件都会有这方面的词汇。
比如:Java-web框架中的Spring生命周期、html的页面生命周期等。
在官网中,针对生命周期钩子有下面的描述内容:
每个 Vue 实例在
被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM并在数据变化时更新 DOM等。
同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
对于生命周期钩子函数的使用,在 生命周期钩子函数API 中有各种函数说明。
在使用生命周期钩子函数时,需要注意下列几点要求:
在对象内,以属性的方式进行申明!
箭头函数。
无法使用
this。
| 函数名 | 触发场景 |
|---|---|
| beforeCreate | 实例化之后,在数据观测(data observer)和 event/watcher 事件配置之前被调用 |
| created | 已成创建好实例,在实例创建好之后被调用。此时,实例已经完成以下配置:数据观测(data observer),属性和方法的运算,watch / event 事件回调。 但是,挂载阶段还未开始, $el 属性目前不可见。 |
| beforeMount | 在挂载开始之前被调用:相关的渲染函数首次被调用。 |
| mounted | 挂载成功后被调用,el 将被新创建的 vm.$el 替换。 |
| beforeUpdate | 数据更新(变化)之前被调用。 |
| updated | 数据更新(变化)完毕被调用。 |
关于具体的调用顺序,参考下列案例,进行控制台打印日志进行参考:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
{{message}}
</div>
</body>
<script src="../js/vues.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
message:"8888888"
},
// 实例化之后,在数据观测(data observer)和 event/watcher 事件配置之前被调用
beforeCreate:function(){
console.log("beforeCreate....");
},
// 已成创建好实例,在实例创建好之后被调用
// 此时,实例已经完成以下配置:数据观测(data observer),属性和方法的运算,watch / event 事件回调
// 但是,挂载阶段还未开始, $el 属性目前不可见
created:function(){
console.log("created....");
},
// 在挂载开始之前被调用:相关的渲染函数首次被调用
beforeMount:function(){
console.log("beforeMount....");
},
// 挂载成功,el 将被新创建的 vm.$el 替换
mounted:function(){
console.log("mounted....");
},
// 数据更新(变化)之前被调用
beforeUpdate:function(){
console.log("beforeUpdate....");
},
// 数据更新(变化)完毕被调用
updated:function(){
console.log("updated....");
}
// ,
// activated:function(){
// console.log("activated....");
// },
// deactivated:function(){
// console.log("deactivated....");
// },
// beforeDestroy:function(){
// console.log("beforeDestroy....");
// },
// destroyed:function(){
// console.log("destroyed....");
// }
});
// 设定5秒后,数据变更
setTimeout(function(){
//vm.$data.message = "99999";
vm.message = "99999";
},5000)
</script>
</html>
页面刚加载时:

页面加载5秒后,由于定时任务修改参数信息,此时控制台打印日志信息如下所示:
