Vue生命周期函数

900 阅读1分钟

什么是生命周期函数?

生命周期函数(生命周期钩子)就是在某一个时间点会自动执行的函数

在创建Vue实例的时候,调用new Vue(),会产生运行8个生命周期函数,分别是(beforeCreatecreatedbeforeMountmountedbeforeupdataupdatedbeforeDestroydestroyed)。

下图为vue官网文档生命周期图示

生命周期.png

实际上运行生命周期函数要经历许多步骤。 首先初始化事件和生命周期函数相关内容,在这个时间点后beforeCreate函数被执行

然后vue会处理外部注入和双向绑定的一些内容,这部分初始化完成后,created函数被执行

随后进行逻辑判断,看是否有el挂载,随后判断是否有'template'属性,有的话将'template'属性的内容当作模板 ,没有的话将el挂载的内容当作模板

此时执行beforeMount 随后模板与数据相结合,挂载在页面, 页面挂载之后执行mounted

beforeMount: function () {
            console.log(this.$el);
            console.log("beforeMount");
            },
  mounted: function () {
            console.log(this.$el);
            console.log("mounted");

执行上述代码后可以得到

image.png

可以看出在beforeMount时模板还没有和数据结合,而mounted函数执行时已经挂载

而在调用vm.$destroy()方法销毁组件的时候,beforeDestroy函数被执行,

image.png

当组件销毁完毕时destroy函数被执行

可以看到当数据发生改变时beforeupdata函数被执行(数据重新渲染前),数据重新渲染后updated函数被执行

image.png

另外还有3个生命周期函数较为特殊,activated(被 keep-alive 缓存的组件激活时调用),deactivated( keep-alive 缓存的组件失效时调用),errorCaptured(捕获一个来自后代组件的错误时被调用)