import React, { type PropsWithChildren } from 'react'; interface ErrorBoundaryProps extends PropsWithChildren { namespace?: string; onReportClick?: () => void; onResetClick?: () => void; onRetryClick?: () => void; reportAPI?: string; } interface ErrorBoundaryState { error: any; errorInfo: any; reported?: boolean; resetted?: boolean; showDetail: boolean; timer?: NodeJS.Timeout | undefined; try: boolean; tryCnt: number; } export class ReactBasicErrorBoundary extends React.PureComponent< ErrorBoundaryProps, ErrorBoundaryState > { constructor(props: ErrorBoundaryProps) { super(props); this.state = { error: null, errorInfo: null, showDetail: false, timer: undefined, try: false, tryCnt: 0, }; } componentDidCatch(error: any, errorInfo: any) { // Catch errors in any components below and re-render with error message this.setState({ error, errorInfo, try: false, }); // You can also log error messages to an error reporting service here } render() { if (this.state.errorInfo) { // Error path return (

Error

{this.state.error && ( <>

In: {this.props.namespace ?? 'default'}

{this.state.error.toString()}
)}
); } // Normally, just render children return this.props.children; } } export default ReactBasicErrorBoundary;