Skip to content

Instantly share code, notes, and snippets.

@esemeniuc
Last active June 29, 2023 14:40
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esemeniuc/0586ff44995f370064bebf90134948ef to your computer and use it in GitHub Desktop.
Save esemeniuc/0586ff44995f370064bebf90134948ef to your computer and use it in GitHub Desktop.
ErrorBoundary for React 16 using Typescript
import React, {ErrorInfo} from 'react';
export default class ErrorBoundary extends React.Component<{}, { hasError: boolean }> {
constructor(props: {}) {
super(props);
this.state = {hasError: false};
}
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);
}
render() {
if (this.state.hasError) { // You can render any custom fallback UI
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
@moaazbhnas228
Copy link

Thank you. Grateful I found this.

One thing is missing though. children needs to be added to props:

React.Component<{children: React.ReactNode}, { hasError: boolean }>

Or maybe define an instance for both state and props:

import React, { ErrorInfo, ReactNode } from "react";

interface Props {
	children: ReactNode;
}

interface State {
	hasError: boolean;
}

class ErrorBoundary extends React.Component<Props, State> {

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment