38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import React from 'react';
|
||
|
||
class ErrorBoundary extends React.Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = { hasError: false };
|
||
this.logger = null;
|
||
|
||
if (typeof window === 'undefined') {
|
||
this.logger = require('../src/logger');
|
||
}
|
||
}
|
||
|
||
static getDerivedStateFromError(error) {
|
||
// Update state so the next render will show the fallback UI.
|
||
return { hasError: true };
|
||
}
|
||
|
||
componentDidCatch(error, info) {
|
||
// Log the error to an error reporting service
|
||
console.error(error, info);
|
||
if (this.logger) {
|
||
this.logger.error(`${error}: ${info.componentStack}`);
|
||
}
|
||
}
|
||
|
||
render() {
|
||
if (this.state.hasError) {
|
||
// Render any custom fallback UI
|
||
return <h1>Нещо се обърка. Моля, опитай отново и се свържете с нас ако проблема продължи. </h1>;
|
||
}
|
||
|
||
return this.props.children;
|
||
}
|
||
}
|
||
|
||
export default ErrorBoundary;
|