You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

34 lines
655 B

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
}
}