|
|
|
@ -0,0 +1,34 @@ |
|
|
|
import React, { Component } from 'react' |
|
|
|
|
|
|
|
interface ErrorBoundaryProps { |
|
|
|
fallback?: string | React.ReactNode |
|
|
|
children: React.ReactNode |
|
|
|
} |
|
|
|
|
|
|
|
interface ErrorBoundaryState { |
|
|
|
hasError: boolean |
|
|
|
} |
|
|
|
|
|
|
|
export default class ErrorBoundary extends Component< |
|
|
|
ErrorBoundaryProps, |
|
|
|
ErrorBoundaryState |
|
|
|
> { |
|
|
|
state = { hasError: false } |
|
|
|
|
|
|
|
static getDerivedStateFromError(error) { |
|
|
|
console.log(error) |
|
|
|
return { hasError: true } |
|
|
|
} |
|
|
|
|
|
|
|
componentDidCatch(error, errorInfo) { |
|
|
|
console.log(error, errorInfo) |
|
|
|
} |
|
|
|
|
|
|
|
render() { |
|
|
|
if (this.state.hasError) { |
|
|
|
return this.props.fallback || 'Something went wrong' |
|
|
|
} |
|
|
|
|
|
|
|
return this.props.children |
|
|
|
} |
|
|
|
} |