Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是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 :当前组件已被删除,清空相关内容