Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript componentDidCatch之后重定向用户的方法_Javascript_Reactjs_Error Handling_Redux_React 16 - Fatal编程技术网

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

Javascript componentDidCatch之后重定向用户的方法,javascript,reactjs,error-handling,redux,react-16,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<{}, Erro

在我的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;
    }
}
import*as React from“React”;
接口错误边界状态{
hasrerror:布尔型;
errorInfo:React.errorInfo;
}
导出类ErrorBoundary扩展React.Component{
构造器(道具:任何){
超级(道具);
此.state={
错误:错,
错误信息:未定义,
};
}
公共组件didcatch(错误:error,信息:React.ErrorInfo){
这是我的国家({
哈斯:没错,
错误信息:信息
});
控制台错误(错误,信息);
}
公共渲染(){
if(this.state.hasError){
返回(
出现问题,请稍后再试。
);
}
返回此.props.children;
}
}

当hasError设置为true时,它会保持在那里。哪里是一个好地方,可以将其设置为false并再次向孩子们展示

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

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