一文详解Vue选项式 API 的生命周期选项和组合式API

 更新时间:2023年03月26日 11:14:17   作者:是洋柿子啊  
这篇文章主要为大家介绍了Vue选项式 API 的生命周期选项和组合式API变化详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Vue2、Vue3 生命周期的变化

正好在看Vue的官方文档,也正好比对一下,做一下笔记

选项式 API 的生命周期选项的变化

Vue2.xVue3
beforeCreatebeforeCreate
createdcreated
beforeMountbeforeMount
mountedmounted
beforeUpdatebeforeUpdate
updatedupdated
beforeDestroybeforeUnmount
destroyedunmounted
新增
errorCaptured
renderTracked
renderTriggered

这里我们会发现Vue3对Vue2的生命周期钩子似乎没有做大的调整

  • 修改
    • destroyed 生命周期选项被重命名为 unmounted
    • beforeDestroy 生命周期选项被重命名为 beforeUnmount
  • 新增
    • errorCaptured:在捕获一个来自后代组件的错误时被调用。
    • renderTracked:跟踪虚拟 DOM 重新渲染时调用。
    • renderTriggered:当虚拟 DOM 重新渲染被触发时调用。

小知识

所有生命周期钩子的 this 上下文将自动绑定至当前的实例中,所以我们可以在 钩子函数中通过this轻松访问到 data、computed 和 methods。

那么我有个大胆的想法!就是用箭头函数进行定义生命周期钩子函数,可以如期的访问到我们想要的实例吗?

测试:

const app = Vue.createApp({
  data() {
    return {
      cart: 0
   }
},
mounted: () => { console.log(this.cart) },
  methods: {
    addToCart() {
      this.cart += 1
    }
  }
})

app.mount("#app");

不出所望的undefined了,我们打印一下this

指向的上下文是window并不是我们的Vue实例。

至于为什么会这样,我们可以很简单的从箭头函数的特性来进行一波简单的解释:
我们在定义箭头函数的时候,定义初就绑定了父级上下文,因为箭头函数绑定了父级上下文,所以 this 不会指向预期的组件实例,并且this.datathis.addToCart 都将会是 undefined。

组合式 生命周期选项 API

选项式 API 的生命周期选项和组合式 API 之间是有映射关系的, 整体来看,变化不大,只是名字大部分上是on${选项式 API 的生命周期选项}

  • beforeCreate -> 使用 setup()
  • created -> 使用 setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeUnmount -> onBeforeUnmount
  • unmounted -> onUnmounted
  • errorCaptured -> onErrorCaptured
  • renderTracked -> onRenderTracked
  • renderTriggered -> onRenderTriggered
  • activated -> onActivated
  • deactivated -> onDeactivated

参考:组合式 API 生命周期钩子

使用:

export default {
  setup() {
    // mounted
    onMounted(() => {
      console.log('Component is mounted!')
    })
  }
}

VNode 生命周期事件

在查阅 Vue 的生命周期的时候,发现了这个,说实话我在平常业务开发中还真没怎么用过,不过秉承着宁可多学些也不错过的就记录一下吧!

Vue2x

在Vue2版本中,如果我们想要监听组件内的生命周期的阶段。我们可以通过 hook:${组件生命周期钩子名称}来进行组件内部的事件监听。

<template>
  <child-component @hook:updated="onUpdated">
</template>

Vue3x

在 Vue 3 中,如果我们想要监听组件内的生命周期的阶段。我们可以通过 vnode-${组件生命周期钩子名称}来进行组件内部的事件监听。额外地,这些事件现在也可用于 HTML 元素,和在组件上的用法一样。

<template>
  <child-component @vnode-updated="onUpdated">
</template>

或者用驼峰命名法

<template>
  <child-component @vnodeUpdated="onUpdated">
</template>

以上就是一文详解Vue选项式 API 的生命周期选项和组合式API的详细内容,更多关于Vue选项组合API生命周期的资料请关注脚本之家其它相关文章!

相关文章

  • vue 父组件给子组件传值子组件给父组件传值的实例代码

    vue 父组件给子组件传值子组件给父组件传值的实例代码

    这篇文章主要介绍了vue 父组件给子组件传值,子组件给父组件传值,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue组件与Vue cli脚手架安装方法超详细讲解

    Vue组件与Vue cli脚手架安装方法超详细讲解

    CLI是一个全局安装的npm包,提供了终端里的vue命令。它可以通过vue create快速搭建一个新项目,或者直接通过vue serve构建新想法的原型。你也可以通过vue ui通过一套图形化界面管理你的所有项目
    2022-11-11
  • Vue 2.0双向绑定原理的实现方法

    Vue 2.0双向绑定原理的实现方法

    这篇文章主要为大家详细介绍了Vue 2.0双向绑定原理的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 详解如何使用vue实现可视化界面设计

    详解如何使用vue实现可视化界面设计

    Vue是一款流行的前端开发框架,它的响应式数据绑定和组件化特性使得它成为了可视化界面设计的一个理想选择,本文将介绍如何使用Vue实现可视化界面设计,并且演示一个基于Vue的可视化界面设计案例,需要的朋友可以参考下
    2023-12-12
  • vue中如何使用echarts和echarts-gl实现3D饼图环形饼图

    vue中如何使用echarts和echarts-gl实现3D饼图环形饼图

    现在vue是很多公司前端的主流框架,我目前所在公司接触的项目也都是使用vue来实现的,很少有完全使用原生的JavaScript来写项目的了,下面这篇文章主要给大家介绍了关于vue中如何使用echarts和echarts-gl实现3D饼图环形饼图的相关资料,需要的朋友可以参考下
    2023-03-03
  • Vue实现鼠标经过文字显示悬浮框效果的示例代码

    Vue实现鼠标经过文字显示悬浮框效果的示例代码

    这篇文章主要介绍了Vue实现鼠标经过文字显示悬浮框效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Vue3编程流畅技巧自定义Hooks

    Vue3编程流畅技巧自定义Hooks

    这篇文章主要为大家介绍了Vue3必学技巧-自定义Hooks-让写Vue3更畅快示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Vue Element 分组+多选+可搜索Select选择器实现示例

    Vue Element 分组+多选+可搜索Select选择器实现示例

    这篇文章主要介绍了Vue Element 分组+多选+可搜索Select选择器实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue实现添加标签demo示例代码

    vue实现添加标签demo示例代码

    本篇文章主要介绍了vue实现添加标签demo示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Vue 源码分析之 Observer实现过程

    Vue 源码分析之 Observer实现过程

    这篇文章主要介绍了 Vue 源码分析之 Observer实现过程,Observer 最主要的作用就是实现了touch -Data(getter) - Collect as Dependency这段过程,也就是依赖收集的过程,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-03-03

最新评论