在componentDidCatch之后重定向用户的方法

时间:2018-06-28 14:55:57

标签: javascript reactjs error-handling redux react-16

在我的componentDidCatch()方法中发现了错误,并且呈现了自定义错误UI。

如何从错误中继续前进,而不使用户强制更新页面?

import * as React from "react";

interface ErrorBoundaryState {
    hasError: boolean;
    errorInfo: React.ErrorInfo;
}

export class ErrorBoundary extends React.Component<{}, ErrorBoundaryState> {
    constructor(props: any) {
        super(props);
        this.state = {
            hasError: false,
            errorInfo: undefined,
        };
    }

    public componentDidCatch(error: Error, info: React.ErrorInfo) {
        this.setState({
            hasError: true,
            errorInfo: info
        });
        console.error(error, info);
    }

    public render() {
        if (this.state.hasError) {
            return (
                <h2>Something went wrong, please try again later.</h2>
            );
        }
        return this.props.children;
    }
}

当hasError设置为true时,它会停留在那里。将其设置为false并再次向孩子展示的好地方在哪里?

1 个答案:

答案 0 :(得分:0)

我认为用户想知道为什么被打断了。因此,您可以显示一条错误消息,向用户表示抱歉,并告诉他们5秒钟后他可以重新使用该应用程序。

您可以使用setTimeout在5秒后将状态设置为hasError:false。