onErrorCaptured()
注册一个回调,当从后代组件传播的错误,被捕获到时,调用。
类型
function onErrorCaptured(callback: ErrorCapturedHook): void type ErrorCapturedHook = ( err: unknown, instance: ComponentPublicInstance | null, info: string ) => boolean | void
细节
可以从以下来源捕获错误:
- 组件渲染
- 事件处理程序
- 生命周期钩子
setup()
功能- 观察者
- 自定义指令钩子
- 过渡挂钩
钩子接收三个参数:错误、触发错误的组件实例和指定错误源类型的信息字符串。
您可以修改组件状态,用errorCaptured()
向用户显示错误状态。但是,重要的是错误状态不应呈现导致错误的原始内容;否则组件将被抛出无限渲染循环。
钩子可以返回
错误传播规则
- 默认情况下,如果已定义app.config.errorHandler,所有错误仍会发送到应用程序级别,因此这些错误仍可以在一个地方报告给分析服务。
- 如果一个组件的继承链或父链上,存在多个
errorCaptured()
钩子,它们都会在同一个错误时被调用。 - 如果
errorCaptured()
钩子本身抛出一个错误,这个错误和原始捕获的错误,都会被发送到app.config.errorHandler。 errorCaptured()
挂钩可以返回false ,以防止错误进一步传播。这实质上是在说“这个错误已经被处理,应该被忽略”。它将防止任何额外的errorCaptured()
钩子或被app.config.errorHandler调用此错误。