我的用例是:在我的反应应用程序的顶层,我想捕获任何错误,清除缓存(以防止任何与数据相关的错误持续存在),然后无论如何都会抛出错误,以便应用程序崩溃。
这可能并不像听起来那么奇怪,因为我在 React Native 中工作。在移动应用程序中,错误导致应用程序崩溃是很常见的,因此您可以再次打开它。
我已经建立了这个:
class TopLevelErrorBoundary extends React.Component<Props, State> {
constructor(props: Props) {
super(props)
this.state = { hasError: false, hasClearedCache: false }
}
static getDerivedStateFromError(error: Error) {
return { hasError: true, error }
}
async clearCacheAndRaiseError(error: Error) {
await cache.clear()
throw error
}
componentDidCatch(error: Error): void {
this.clearCacheAndRaiseError(error)
}
render() {
const { hasError, error } = this.state
if (hasError && error) {
return null
}
return this.props.children
}
}
然而,再次抛出错误似乎没有任何作用 - 看起来它只是挂在null
状态上。
有没有办法实现这一目标?