vue3的生命周期

vue3的生命周期

1.onMount()

已挂载,组件完成初始渲染并创建DOM节点后

2.onUpdated()

已更新,在组件因为响应状态变更而跟心其DOM树之后调用

父组件的更新钩子将在其子组件的更新钩子之后调用

这个钩子在服务器端渲染期间不会被调用

3.onUnmounted()

在组件实例被卸载之后调用

一个组件在以下情况视为已卸载:

其所有子组件都已经被卸载

所有相应的响应式作用(渲染作用以及setup()时创建的计算属性和侦听器)都已经停止

可以这个钩子中手动清理一些副作用,例如计时器、DOM事件监听器或者与服务器的连接

这个钩子在服务器端渲染组件期间不会被调用

4.onErrorCaptured()

在捕获了后代组件传递的错误时调用

  • function onErrorCaptured(callback: ErrorCapturedHook): voidtype ErrorCapturedHook = ( err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void

错误可以从以下几个来源中捕获:

  • 组件渲染
  • 事件处理器
  • 生命周期钩子
  • setup()函数
  • 侦听器
  • 自定义指令钩子
  • 过渡钩子

这个钩子带有三个实参:错误对象、触发该错误的组件实例,以及一个说明错误来源类型的信息字符串

错误传递规则:

默认情况下,所有错误都会被发送到应用及的 app.config.errorHandler (前提是这个函数已经定义),这样这些错误都能在一个同意的地方报告给分析服务

如果组件的继承链或·组件链上存在多个errorCaptured钩子,对于同一个错误,这些钩子会被按从底至上的顺序一一调用。这个过程被称为“向上传递”,类似于原生DOM事件的冒泡机制

如果errorCaptured钩子本身抛出了一个错误,那么这个错误和原来捕获到的错误都将被发送到app.config.errorHandler

errorCaptured 钩子可以通过false来阻止错误继续向上传递。即表示“这个错误已经被处理了,应当被忽略”,它将阻止其他的errorCaptured 钩子或app.config.errorHandler 因这个错误而被调用

5.onActivated()

若组件实例是<keepAlive>缓存树的一部分,当组件被插入到DOM中时调用

6.onDeactivated()

若组件实例是<keepAlive>缓存树的一部分,当组件从DOM中被移出时调用

<script setup>
import { onActivated, onDeactivated } from 'vue'

onActivated(() => {
  // 调用时机为首次挂载
  // 以及每次从缓存中被重新插入时
})

onDeactivated(() => {
  // 在从 DOM 上移除、进入缓存
  // 以及组件卸载时调用
})
</script>

请注意:

  • onActivated 在组件挂载时也会调用,并且 onDeactivated 在组件卸载时也会调用。
  • 这两个钩子不仅适用于 <KeepAlive> 缓存的根组件,也适用于缓存树中的后代组件。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值