Vue的生命周期

Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。

vue生命周期

1、create 和 mounted 相关

1、new Vue()

创建vue实例

2、beforecreated

el 和 data 并未初始化 ,可以在这加个loading事件

3、Observe Date,Init Events

Observe Date为开始监控Data对象数据变化,Init Events为Vue内部初始化事件

4、created

el未初始化,data已经初始化,可以在这里再初始化data,实现函数自运行

5、Compile template into render function

编译模板,把data里面的数据和模板生成html,但并没有渲染到页面

6、beforeMount

完成el的初始化,此时还没生成页面,比如

这种状态,未显示

7、Create vm.$el and replace “el” width it

用上面生成的html替换el属性指向的dom对象

8、mounted

完成挂载,也就是模板中的html渲染到了页面中,此时一般可以做一些ajax操作,mounted只会执行一次

2、update 相关

1、beforeUpdate

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

2、updated

当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。

3、beforeDestroy

实例销毁之前调用。在这一步,实例仍然完全可用。

4、destroyed

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

3、总结

beforecreate : 可以在这加个loading事件
created :在这结束loading,还做一些初始化,实现函数自执行
mounted : 在这发起后端请求,拿回数据,配合路由钩子做一些事情
beforeUpdate:可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程
beforeDestory: 你确认删除XX吗? destoryed :当前组件已被删除,清空相关内容