ErrorBoundary.tsx•1 kB
import React, { ErrorInfo } from "react";
export type Props = {
children: React.ReactNode;
};
type State = {
hasError: boolean;
};
// Basically just the example from https://reactjs.org/docs/error-boundaries.html
export default class ErrorBoundary extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
this.state = { hasError: false };
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
static getDerivedStateFromError(error: Error) {
// Update state so the next render will show the fallback UI.
return { hasError: true };
}
componentDidCatch(error: Error, errorInfo: ErrorInfo) {
// You can also log the error to an error reporting service
//logErrorToMyService(error, errorInfo);
console.log("Caught error", error, errorInfo);
}
render() {
if (this.state.hasError) {
// You can render any custom fallback UI
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}