vue3.x学习笔记之生命周期

  • • 生命周期 

      • • vue2 生命周期

      • • vue3 生命周期

        • • setup()

        • • onBeforeMount()

        • • onMounted()

        • • onBeforeUpdate()

        • • onUpdated()

        • • onBeforeUnmount()

        • • onUnmounted()

        • • 其他

    • • vue2 和 vue3的生命周期有什么区别

      • • Setup Hook

      • • 选项式 API 变化

      • • 新增与变更的生命周期钩子

      • • 执行顺序及用法

生命周期

生命周期是指一种事物从诞生到死亡的整个过程。在生物学中,生命周期涉及到一个生物体从出生、成长、繁殖,直到死亡的各个阶段。不同物种的生命周期可能会有所不同,有些生物会经历幼年期、青年期、成年期和老年期等不同的发育阶段。

除了生物学,生命周期这个概念也可以应用于其他领域。在软件开发中,生命周期指的是软件从规划、设计、开发、测试、发布到维护和淘汰的整个过程。在项目管理中,生命周期指的是项目从开始到结束的各个阶段,包括启动、规划、执行、监控和收尾。

生命周期描述了一个事物从开始到结束的整个过程,其中包含了不同的阶段和活动。

vue2 生命周期

vue3.x学习笔记之生命周期

Vue2 中的生命周期可以分为八个阶段,分别是:

  1. 1. beforeCreate:在实例初始化之后,数据观测和事件配置之前调用。在这个阶段中,实例的属性和方法都还没有被初始化。

  2. 2. created:在实例创建完成后立即调用。在这个阶段中,实例已经完成了数据观测、属性和方法的运算初始化,但是 DOM 元素还没有被创建和挂载。

  3. 3. beforeMount:在挂载开始之前被调用。在这个阶段中,模板编译成 render 函数后,即将开始挂载组件到 DOM 节点上。

  4. 4. mounted:在组件挂载到 DOM 上后调用。在这个阶段中,组件已经被渲染出来,并且可以进行 DOM 操作。

  5. 5. beforeUpdate:在数据更新之前调用。在这个阶段中,组件还没有重新渲染,但是数据已经更新完成,可以进行一些操作。

  6. 6. updated:在组件重新渲染后调用。在这个阶段中,组件已经重新渲染,并且可以进行 DOM 操作。

  7. 7. beforeDestroy:在实例销毁之前调用。在这个阶段中,组件实例仍然完全可用,可以进行一些操作。

  8. 8. destroyed:在实例销毁之后调用。在这个阶段中,组件实例已经被销毁,不能再进行任何操作。

Vue2 的生命周期包括了组件创建、挂载、更新和销毁等各个阶段,我们可以在不同的阶段进行相应的操作和处理。

vue2 生命周期分类

Vue2 的生命周期可以分为三类:

  1. 1. 创建阶段:

    • • beforeCreate:在实例初始化之后,数据观测和事件配置之前调用。

    • • created:在实例创建完成后立即调用。

  2. 2. 挂载阶段:

    • • beforeMount:在挂载开始之前被调用。

    • • mounted:在组件挂载到 DOM 上后调用。

  3. 3. 更新阶段:

    • • beforeUpdate:在数据更新之前调用。

    • • updated:在组件重新渲染后调用。

  4. 4. 销毁阶段:

    • • beforeDestroy:在实例销毁之前调用。

    • • destroyed:在实例销毁之后调用。

这些生命周期钩子函数提供了在不同阶段执行自定义逻辑的机会。我们可以根据需要在这些钩子函数中进行数据处理、DOM 操作、网络请求等操作。

更多详细内容,请微信搜索“前端爱好者, 戳我 查看 。

vue3 生命周期

vue3.x学习笔记之生命周期

链接地址:https://cn.vuejs.org/api/composition-api-lifecycle.html

Vue3(Vue.js 3.x)的生命周期与Vue 2.x有所不同,它引入了Composition API,并重新组织了生命周期钩子函数。

Vue3中主要的生命周期钩子包括:

setup()

  • • 这是Vue3新增的Composition API中的核心函数,它在组件实例初始化时同步调用,用于设置响应式状态、计算属性和副作用(如监听器)。

  • • 在setup()中可以访问propscontext参数,但不能直接使用this

onBeforeMount()

  • • 在组件挂载到DOM之前触发,可用于执行依赖于模板编译结果但不依赖于真实DOM的操作。

onMounted()

  • • 组件渲染并插入到DOM树后触发,这时可以安全地访问和操作DOM元素或与第三方库交互。

onBeforeUpdate()

  • • 当组件的数据发生变化且即将进行重新渲染时触发,在此阶段可以做一些更新前的准备工作。

onUpdated()

  • • 组件完成数据更新和DOM重新渲染后触发,此时可以基于新的DOM状态进行操作。

onBeforeUnmount()

  • • 组件卸载前触发,用于清理在组件生命周期内注册的各种资源,比如解绑事件、清理定时器等。

onUnmounted()

  • • 组件完全从DOM中卸载并且所有相关资源已经清除之后触发。

其他

  • • 除了上述基本生命周期钩子,还有针对特定场景的钩子,例如:

    • • onActivated() 和 onDeactivated():在Suspense和Keep-Alive场景下激活和失活时触发。

    • • onErrorCaptured():全局错误捕获钩子,用于处理整个组件树中未被捕获的错误。

此外,Vue3通过Composition API提供了更细粒度的副作用管理工具,例如:

  • • watchEffect():立即执行,并在依赖变化时重新运行。

  • • watch():观察特定响应式值的变化并作出反应。

vue2 和 vue3的生命周期有什么区别

Vue 2.x 和 Vue 3.x 的生命周期钩子在设计和使用上存在显著区别:

Setup Hook

  • • Vue 2 中,组件的初始化通过一系列声明周期钩子完成,如 beforeCreatecreatedbeforeMount 等。

  • • Vue 3 引入了 setup() 钩子函数作为新组件API的核心部分,它合并了 Vue 2 中的部分创建阶段的钩子,并且在这个钩子里可以访问响应式数据(ref 和 computed)以及执行副作用操作。setup() 在组件实例被创建之后但在渲染之前调用,而且不能直接访问到 this 上下文。

选项式 API 变化

  • • Vue 3 中,除了 setup(),其他的生命周期钩子仍然存在,但它们现在可以直接作为组件选项导出,而不是定义在类或对象的方法中。

  • • Vue 3 不再支持 beforeDestroy 生命周期,取而代之的是 beforeUnmount,用于在组件卸载前执行清理工作。

新增与变更的生命周期钩子

  • • Vue 3 新增了 onBeforeUpdate 和 onUpdated,分别对应更新前后的钩子,这两个钩子在 Vue 2 中虽然功能存在,但没有对应的明确命名的生命周期方法。

  • • Vue 3 还引入了 onBeforeUnmount 和 onUnmounted,用来替换 Vue 2 中的 beforeDestroy 和 destroyed

  • • Vue 3 中还有与反应性相关的 onRenderTracked 和 onRenderTriggered,用于调试和跟踪响应式依赖变化时触发的渲染过程。

执行顺序及用法

  • • Vue 3 中由于 setup() 的引入,导致生命周期钩子的执行逻辑有所变化。setup() 是最早执行的钩子,在其内部无法访问 datamethods 等传统选项,而是需要通过返回值或显式调用 watchonMounted 等组合式API来操作DOM或者处理异步逻辑。

Vue 3 更注重于函数式的编程范式,借助 Composition API 提供了更灵活的方式来管理组件的状态和生命周期逻辑。

同时,Vue 3 对生命周期钩子进行了精简和补充,使其更加符合现代前端开发需求。


原文始发于微信公众号(前端爱好者):vue3.x学习笔记之生命周期

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/267275.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!