TSX
Public
React Error Boundary Component
Catch rendering errors in a subtree and provide a retryable fallback UI.
#react
#error-handling
#ui
#typescript
TSX
import {
Component,
type ErrorInfo,
type ReactNode,
} from 'react';
type Props = {
children: ReactNode;
fallback?: ReactNode;
};
type State = {
hasError: boolean;
};
export class ErrorBoundary extends Component<Props, State> {
state: State = {
hasError: false,
};
static getDerivedStateFromError(): State {
return {
hasError: true,
};
}
componentDidCatch(error: Error, info: ErrorInfo) {
console.error('Render error:', error, info.componentStack);
}
reset = () => {
this.setState({
hasError: false,
});
};
render() {
if (this.state.hasError) {
return this.props.fallback ?? (
<button type="button" onClick={this.reset}>
Try again
</button>
);
}
return this.props.children;
}
}