vue生命周期

85 阅读2分钟

vue生命周期以及每个生命周期做了什么

  • vue2
    • beforeCreate 是new Vue()触发的第一个钩子,在当前阶段data,methods,computed以及watch上的数据和方法都不能被访问。
    • created 在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用和更改数据,不会触发updated函数,可以做一些初始数据的获取,无法与Dom进行交互(可以通过vm.$nextTick来访问Dom)。
    • beforeMount发生在挂载之前,在这之前template模板已导入渲染函数编译,而当前阶段虚拟Dom已经创建完成,即将开始渲染,可以对数据进行更改,不会触发updated。
    • mounted 在挂载完成后发生,真实Dom已经挂载完毕,数据完成双向绑定,可以访问到Dom节点,使用$ref属性对Dom进行操作
    • beforeUpdate 发生在更新之前,也就是响应式数据发生更新,虚拟dom重新渲染之前被触发,可在当前阶段进行更改数据,不会造成重渲染。
    • updated 发生在更新完成之后,组件Dom已完成更新,要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。
    • beforeDestroy 发生在实例销毁之前,实例完全可以被使用,进行收尾工作,比如清除计时器。
    • destroyed 发生在实例销毁之后,只剩下dom空壳,组件已被拆解,数据绑定被卸除,监听被移除,子实例也统统被销毁。
  • vue3
    • setup 取代vue2的beforeCreate和created。在组件创建钱用于设置响应式数据、方法等。注意:无法访问this,因为它在组件实例初始化之前执行。
    • onBeforeMounted 组件挂载前调用,此时模板已编译成渲染函数,但尚未挂载到DOM
    • onMounted 组件挂载后调用,此时组件已经渲染到DOM,可以执行DOM相关的操作
    • onBeforeUpdate 组件即将因为响应式数据变化而重新渲染前调用,可以访问当前DOM状态
    • onUpdated 组件因为响应式数据变化而重新渲染后调用,可用于执行更新后的副作用操作
    • onBeforeUnmount 组件即将被卸载前调用,执行清理操作,如取消事件监听器,清楚定时器。
    • onUnmounted 组件已卸载后调用,此时组件所有的指令都已解绑,所有事件监听器已被移除,所有子实例也都被销毁。 其他生命周期钩子 onActivated() 和 onDeactivated():在 包裹的组件中,这两个钩子会在组件被激活和停用时调用。 nErrorCaptured():用于捕获组件内部发生的错误。 onRenderTracked() 和 onRenderTriggered():用于调试和性能分析,跟踪响应式数据的依赖和触发。