0

我的用例是:在我的反应应用程序的顶层,我想捕获任何错误,清除缓存(以防止任何与数据相关的错误持续存在),然后无论如何都会抛出错误,以便应用程序崩溃。

这可能并不像听起来那么奇怪,因为我在 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状态上。

有没有办法实现这一目标?

4

0 回答 0