vue3的生命周期函数

 

目录

从Vue2转换到Vue3

什么是Composition API

生命周期钩子的使用

watch

新的调试钩子函数


d12697bf4102ff7b67fee95bd3bab799.png

Vue2和Vue3中的生命周期钩子函数非常相似——我们仍然可以访问相同的钩子函数,并且我们仍然希望将它们用于相同的用例。

但是,随着Composition API的引入,我们访问这些钩子函数的方式已经改变。

到本文结束时,你将了解在Vue3中使用生命周期钩子函数的新方法,并开始编写更好的代码。

从Vue2转换到Vue3

这个方便的Vue2到Vue3的生命周期映射直接来自于Vue3 Composition API 文档,我认为这是一种最有用的方式来查看事情将如何变化,以及我们如何使用它们。

  • beforeCreate -> use setup()
  • created -> use setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • destroyed -> onUnmounted
  • errorCaptured -> onErrorCaptured

什么是Composition API

如果你还不知道,Vue3 Composition API 附带了一个 setup() 方法。此方法封装了我们的大多数组件代码,并处理了响应式,生命周期钩子函数等。

简而言之,Composition API使我们能够更好地将代码组织为更多的模块化功能,而不是根据属性的类型(方法,计算的数据)进行分离。

fb4bbf64e1e80fb13bde3dceb36c6b5a.png

在旧的 beforeCreate 钩子函数之后和 created 的钩子函数之前立即调用 setup 方法。因此,我们不再需要这两个钩子,我们可以简单地将本应有的代码放在 setup() 方法中。

生命周期钩子的使用

与Vue3中的大多数功能一样,生命周期钩子是我们必须导入到项目中的东西,这是为了帮助使项目尽可能轻巧。

我们导入生命周期钩子的方式是这样的。

import { onMounted, onUpdated, onUnmounted } from 'vue'

Vue3中的钩子函数都在 setup() 中调用。computed,watch 可直接调用

<script lang="ts">
import { computed, ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, onActivated, onDeactivated, onErrorCaptured,} from "vue";

export default {
  setup() {
    onBeforeMount(() => {
      // ...
    });
    onMounted(() => {
      // ...
    });
    onBeforeUpdate(() => {
      // ...
    });
    onUpdated(() => {
      // ...
    });
    onBeforeUnmount(() => {
      // ...
    });
    onUnmounted(() => {
      // ...
    });
    onActivated(() => {
      // ...
    });
    onDeactivated(() => {
      // ...
    });
    onErrorCaptured(() => {
      // ...
    });
  },
  functionName() {
    const count = ref(0);
    const double = computed(() => {
      return count.value * 2;
    });
  },
};
</script>

watch

watch 接收两个参数,第一个参数是监听的属性,多个属性可传入数组, 第二个参数是一个回调函数,回调函数有两个参数(newVal, oldVal);当 watch 的第一个参数是一个数组时,newVal 与 oldVal 对应的也是数组形式,一一对应。

// 监听count
watch('count', (newVal, oldVal) => {
    console.log('newVal:', newVal)
    console.log('oldVal:', oldVal)
})
// 监听多个属性值
watch(['count', 'name'], (newVal, oldVal) => {
    console.log('newVal:', newVal) // 数组
    console.log('oldVal:', oldVal) // 数组
})

 如果是需要监听定义在 reacitive 对象中的单一属性,需要通过函数返回值来进行监听

watch(() => data.count, (newVal, oldVal) => {
    console.log('newVal:', newVal)
    console.log('oldVal:', oldVal)
})

新的调试钩子函数

们还可以在Vue3中使用两个全新的钩子函数来进行调试。他们是:

  • onRenderTracked
  • onRenderTriggered

这两个事件都带有一个DebuggerEvent,它使我们能够知道是什么导致了Vue实例中的重新渲染。

export default {
  onRenderTriggered(e) {
    debugger
    // 检查哪个依赖项导致组件重新呈现
  }
}

原文链接:onmounted vue3_如何在Vue3中使用生命周期函数_weixin_39897392的博客-CSDN博客

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3生命周期函数是指在Vue3实例创建、更新、渲染和销毁这几个重要阶段执行的函数Vue3中生命周期函数分为两类:组件生命周期函数和全局生命周期函数。 首先是组件生命周期函数,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeUnmount和unmounted等方法。 beforeCreate:在实例初始化之后,数据观测和事件配置之前被调用,此时 data 和 methods 都还未被初始化。 created:组件实例已经完全创建,包括属性计算、watch/event 事件回调。在这里可以访问到已经存在的 DOM 元素,但是该组件的 DOM 元素尚未被渲染出来。 beforeMount:在挂载开始之前被调用,在此之前 template/render 函数已经完成编译。 mounted:组件挂载到 DOM 上后调用,此时真实的 DOM 元素已经生成,可以对 DOM 进行操作。 beforeUpdate:在数据更新之前被调用,此时可以进行修改数据操作。在此函数执行时组件 DOM 所依赖的 props 和 computed 已经更新,但是尚未开始重新渲染 DOM。 updated:数据更新时调用,此时组件 DOM 已经重新渲染过,可以对 DOM 进行操作。 beforeUnmount:在卸载组件之前调用,此时组件实例仍然可以访问。 unmounted:组件卸载完成后调用,在这里执行一些清理工作,比如清除定时器、解除事件监听等。 接下来是全局生命周期函数,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated和errorCaptured等方法。 errorCaptured:可以在组件的内部所抛出的异常被捕获和处理后,再将这个异常最终传递给全局错误处理。在捕获到错误时,可以对错误进行处理,并使用 nextTick 在渲染更新后再将错误信息抛出。 总之,Vue3的生命周期函数提供了方便的钩子函数来执行组件和全局的自定义逻辑,允许开发人员在关键的阶段进行处理来实现更加复杂的业务逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值