Spaces:
Paused
Paused
File size: 1,034 Bytes
1c72248 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
// ErrorBoundary.tsx
'use client';
import React, { ReactNode, ErrorInfo, Component } from 'react';
interface ErrorBoundaryProps {
children: ReactNode;
fallback?: ReactNode;
}
interface ErrorBoundaryState {
hasError: boolean;
}
class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
constructor(props: ErrorBoundaryProps) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(_: Error): ErrorBoundaryState {
// Update state so the next render will show the fallback UI
return { hasError: true };
}
componentDidCatch(error: Error, errorInfo: ErrorInfo): void {
// You can log the error to an error reporting service
console.error("Error caught by ErrorBoundary:", error, errorInfo);
}
render(): ReactNode {
if (this.state.hasError) {
// You can render any custom fallback UI
return this.props.fallback || <div>Something went wrong.</div>;
}
return this.props.children;
}
}
export default ErrorBoundary; |