35 lines
968 B
TypeScript

import { Alert } from '@chakra-ui/react'
import React from 'react'
import { useTranslation } from 'react-i18next'
// Компонент-обертка для использования хука useTranslation внутри классового компонента
const ErrorMessage = ({ error }: { error: string | null }) => {
const { t } = useTranslation()
return (
<Alert status="error" title={t('journal.pl.common.error')}>
{t('journal.pl.common.error.something')}<br />
{error && <span>{error}</span>}
</Alert>
)
}
export class ErrorBoundary extends React.Component<
React.PropsWithChildren,
{ hasError: boolean, error?: string }
> {
state = { hasError: false, error: null }
static getDerivedStateFromError(error: Error) {
return { hasError: true, error: error.message }
}
render() {
if (this.state.hasError) {
return <ErrorMessage error={this.state.error} />
}
return this.props.children
}
}