Error Boundary — это механизм в React для отлова JavaScript-ошибок в компонентах, их обработки и отображения резервного UI вместо "упавшего" компонента. Это помогает предотвратить полное crashes приложения из-за ошибок в отдельных частях интерфейса.
try/catch
, но для React-компонентов.Вот пример базового Error Boundary:
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// Обновляем состояние для отображения резервного UI
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// Можно отправить ошибку в сервис мониторинга (Sentry, LogRocket)
console.error('Caught error:', error, errorInfo);
}
render() {
if (this.state.hasError) {
// Резервный UI
return <h1>Что-то пошло не так.</h1>;
}
return this.props.children;
}
}
Оберните компоненты, которые могут выбросить ошибку:
<ErrorBoundary>
<MyComponent />
</ErrorBoundary>
componentDidUpdate(prevProps) {
if (prevProps.someKey !== this.props.someKey) {
this.setState({ hasError: false });
}
}
Пока React не предоставляет хуков для Error Boundary, можно использовать:
react-error-boundary
Error Boundary — важный инструмент для обработки ошибок в React-приложениях. Его реализация требует классового компонента с методами getDerivedStateFromError
и componentDidCatch
. Правильное использование помогает улучшить UX при возникновении ошибок.