根据 官方文档 中的描述,增加个人的理解和说明。这只是一个笔记。
至于什么是生命周期钩子
,为什么会取钩子
这个词,我也不甚理解。但对于生命周期而言,相信很多人都会知道大部分软件都会有这方面的词汇。
比如: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秒后
,由于定时任务修改参数信息
,此时控制台打印日志信息如下所示: