Vue生命周期函数

151 阅读2分钟

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数。

( 1 )new Vue()

创建了一个Vue组件实例,进入创建过程。

(2)Init Event &LifeCycle

初始化组件事件及生命周期函数

(3)beforeCreate

创建阶段:第一个生命周期函数,这里data数据、method方法,el实例都没办法被访问到

(4)Init injections & reactivity

这个阶段初始化data数据、method方法。

(5)created

创建阶段:第二个生命周期函数,此时可以访问data数据、method方法,但是无法访问el实例,因为页面还未被渲染,

通常情况:我们在这个生命周期函数中去发送ajax请求去请求后台数据。

(6)编译阶段

     把数据获取到,并且解析执行模板结构,在内存中将模板页面渲染出来。

(7)beforeMount

创建阶段:因为内存中存着渲染之后的模板结构,所以beforeMount可以访问到el对象,但是el对象实例中并未将数据挂载到模板结构上,

此时页面上显示的只是模板页面。

(8)Create vm.$el and replace with it

这是将内存中的模板结构替换到页面上。

(9)mounted

创建阶段: 创建阶段的最后一个生命周期函数,此时页面真正渲染到浏览器中,

第三方插件的初始化必须在这个步骤里完成。

(10)运行阶段(更新阶段)

当data数据变化,页面更新的步骤:

1、拿到最新的数据 :beforeUpdate

2、根据最新数据在内存中重新渲染DOM树:virtual DOM re-render

3、把旧的DOM树移除,替换成新的DOM树;virtual DOM patch

updated:页面是最新的,数据也是最新的

(11)销毁阶段:

beforeDestroy:组件还未被销毁,data, method el都是可以被访问的,可以在这里清除定时器。

Destroyed: 组件完成销毁。