Способы перенаправления пользователя после componentDidCatch
Поймал ошибку в моем методе componentDidCatch(), и пользовательский интерфейс ошибки отображается.
Что было бы изящным способом отойти от ошибки и не заставить пользователя принудительно обновить страницу?
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 ответ
Я думаю, что пользователь хочет знать, почему был прерван. Таким образом, вы можете отобразить ошибку, извиняясь перед пользователем и сказав ему, что через 5 секунд он может повторно использовать приложение.
Вы можете использовать setTimeout, чтобы установить состояние hasError:false через 5 секунд.