Vue2.x Vue生命周期方法
写在前面: 此博客记录自己学习vue学习笔记,如有侵权,联系删!
学习来源: Vue + Vue-Cli 快速入门教程
李南江老师各平台账号:
- 微博:极客江南
- 微信公众号:李南江
- 腾讯课堂: 李南江
- 网易云课堂:李南江
什么是生命周期方法?
和wbpack生命周期方法一样, 都是在从生到死的特定阶段调用的方法
PS: 生命周期钩子 = 生命周期函数 = 生命周期事件
Vue生命周期方法分类
1、创建期间的生命周期方法
- beforeCreate:在调用beforeCreate的时候, 仅仅表示Vue实例刚刚被创建出来,此时此刻还没有初始化好Vue实例中的数据和方法, 所以此时此刻还不能访问Vue实例中保存的数据和方法
- created:在调用created的时候, 是我们最早能够访问Vue实例中保存的数据和方法的地方
- beforeMount:在调用beforeMount的时候, 表示Vue已经编译好了最终模板, 但是还没有将最终的模板渲染到界面上
- mounted:在调用mounted的时候, 表示Vue已经完成了模板的渲染, 表示我们已经可以拿到界面上渲染之后的内容了
2、运行期间的生命周期方法
- beforeUpdate:在调用beforeUpdate的时候, 表示Vue实例中保存的数据被修改了
注意点:只有保存的数据被修改了才会调用beforeUpdate, 否则不会调用
注意点:在调用beforeUpdate的时候, 数据已经更新了, 但是界面还没有更新 - updated:在调用updated的时候, 表示Vue实例中保存的数据被修改了, 并且界面也同步了修改的数据了,也就是说: 数据和界面都同步更新之后就会调用updated
3、销毁期间的生命周期方法
- beforeDestroy:在调用beforeDestroy的时候, 表示当前组件即将被销毁了
注意点: 只要组件不被销毁, 那么beforeDestroy就不会调用,beforeDestroy函数是我们最后能够访问到组件数据和方法的函数 - destroyed:在调用destroyed的时候, 表示当前组件已经被销毁了
注意点: 只要组件不被销毁, 那么destroyed就不会调用,不要在这个生命周期方法中再去操作组件中数据和方法
李南江老师的图示:
html代码:
<div id="app">
<p>{{msg}}</p>
</div>
组件代码:
vue代码:
Vue.component("one", {
template: "#one",
data: function(){
return {
msg: "知播渔"
}
},
methods: {
say(){
console.log("say");
}
},
beforeDestroy: function(){
/*
在调用beforeDestroy的时候, 表示当前组件即将被销毁了
注意点: 只要组件不被销毁, 那么beforeDestroy就不会调用
beforeDestroy函数是我们最后能够访问到组件数据和方法的函数
* */
// console.log("beforeDestroy");
// console.log(this.msg);
// console.log(this.say);
},
destroyed: function(){
/*
在调用destroyed的时候, 表示当前组件已经被销毁了
注意点: 只要组件不被销毁, 那么destroyed就不会调用
不要在这个生命周期方法中再去操作组件中数据和方法
* */
console.log("destroyed");
}
});
let vue = new Vue({
beforeCreate:function(){
/*
在调用beforeCreate的时候, 仅仅表示Vue实例刚刚被创建出来
此时此刻还没有初始化好Vue实例中的数据和方法, 所以此时此刻还不能访问Vue实例中保存的数据和方法
* */
// console.log(this.msg);
// console.log(this.say);
},
created:function(){
/*
在调用created的时候, 是我们最早能够访问Vue实例中保存的数据和方法的地方
* */
// console.log(this.msg);
// console.log(this.say);
},
beforeMount:function(){
/*
在调用beforeMount的时候, 表示Vue已经编译好了最终模板, 但是还没有将最终的模板渲染到界面上
* */
// console.log(document.querySelector("p").innerHTML);
// console.log(document.querySelector("p").innerText);
},
mounted:function(){
/*
在调用mounted的时候, 表示Vue已经完成了模板的渲染, 表示我们已经可以拿到界面上渲染之后的内容了
* */
console.log(document.querySelector("p").innerHTML);
console.log(document.querySelector("p").innerText);
},
beforeUpdate:function(){
/*
在调用beforeUpdate的时候, 表示Vue实例中保存的数据被修改了
注意点: 只有保存的数据被修改了才会调用beforeUpdate, 否则不会调用
注意点:
* */
// console.log("beforeUpdate");
// console.log(this.msg);
// console.log(document.querySelector("p").innerHTML);
// console.log(document.querySelector("p").innerText);
},
updated:function(){
/*
在调用updated的时候, 表示Vue实例中保存的数据被修改了, 并且界面也同步了修改的数据了
也就是说: 数据和界面都同步更新之后就会调用updated
* */
console.log(this.msg);
console.log(document.querySelector("p").innerHTML);
console.log(document.querySelector("p").innerText);
},
el: '#app',
// 这里就是MVVM中的Model
data: {
msg: "知播渔"
},
// 专门用于存储监听事件回调函数
methods: {
say(){
console.log("say");
}
}
});