vue实例从创建到销毁的过程就是生命周期。vue框架内置的函数(钩子函数),随着生命周期自动执行,分为以下四个阶段,包含八个钩子函数。
一、初始化阶段
- beforeCreate()
- 执行机制:new Vue()以后, vue内部给实例对象添加了一些属性和方法, data和methods初始化"之前"。
- created()
- 使用场景: 网络请求, 注册全局事件。
- 执行机制:data和methods方法初始化以后。
二、挂载阶段
- beforeMount()
- 使用场景: 预处理data, 不会触发updated钩子函数。
- 执行机制:真实DOM挂载之前。
- mounted()
- 使用场景: 挂载后真实DOM。
- 执行机制:真实DOM挂载以后。
三、更新阶段
- beforeUpdate()
- updated()
四、销毁阶段
- beforeDestroy()
- destroyed()
- 执行机制: v-if=“false” 销毁Vue实例。
- 使用场景:移除全局事件, 移除当前组件, 计时器, 定时器, eventBus移除事件$off方法。
beforeCreate(){
console.log("beforeCreate -- 执行");
console.log(this.msg);
},
created(){
console.log("created -- 执行");
console.log(this.msg);
this.timer = setInterval(() => {
console.log("哈哈哈");
}, 1000)
},
beforeMount(){
console.log("beforeMount -- 执行");
console.log(document.getElementById("myP"));
this.msg = "重新值"
},
mounted(){
console.log("mounted -- 执行");
console.log(document.getElementById("myP"));
},
beforeUpdate(){
},
updated(){
console.log("updated -- 执行");
console.log(document.querySelectorAll("#myUL>li")[4]);
},
beforeDestroy(){
console.log('beforeDestroy -- 执行');
clearInterval(this.timer)
},
destroyed(){
console.log("destroyed -- 执行");
}
|