• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • onErrorCaptured()

    注册一个回调,当从后代组件传播的错误,被捕获到时,调用。

    类型

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


    细节

    可以从以下来源捕获错误:

    • 组件渲染
    • 事件处理程序
    • 生命周期钩子
    • setup()功能
    • 观察者
    • 自定义指令钩子
    • 过渡挂钩

    钩子接收三个参数:错误、触发错误的组件实例和指定错误源类型的信息字符串。

    您可以修改组件状态,用errorCaptured()向用户显示错误状态。但是,重要的是错误状态不应呈现导致错误的原始内容;否则组件将被抛出无限渲染循环。

    钩子可以返回false,以阻止错误进一步传播。


    错误传播规则

    • 默认情况下,如果已定义app.config.errorHandler,所有错误仍会发送到应用程序级别,因此这些错误仍可以在一个地方报告给分析服务。
    • 如果一个组件的继承链或父链上,存在多个errorCaptured()钩子,它们都会在同一个错误时被调用。
    • 如果errorCaptured()钩子本身抛出一个错误,这个错误和原始捕获的错误,都会被发送到app.config.errorHandler
    • errorCaptured()挂钩可以返回false,以防止错误进一步传播。这实质上是在说“这个错误已经被处理,应该被忽略”。它将防止任何额外的errorCaptured()钩子或被app.config.errorHandler调用此错误。

    上篇:onUnmounted()

    下篇:onRenderTracked()