Перейти к содержимому
На этой странице

Ошибки в React

Все темы React Developer

Как обрабатывать ошибки в React-приложении с помощью Error Boundary?

Error Boundary — это компонент, который отлавливает ошибки в дочерних компонентах и предотвращает их распространение на всю иерархию.

Основные шаги:

  1. Создание Error Boundary:

    • Создайте классовый компонент с методами componentDidCatch и getDerivedStateFromError.
    import React, { Component } from 'react';
    
    class ErrorBoundary extends Component {
      constructor(props) {
        super(props);
        this.state = { hasError: false };
      }
    
      static getDerivedStateFromError(error) {
        // Обновляем состояние, чтобы следующий рендер показал запасной UI
        return { hasError: true };
      }
    
      componentDidCatch(error, errorInfo) {
        // Вы можете отправить ошибку на сервер
        console.error("Error caught by ErrorBoundary:", error, errorInfo);
      }
    
      render() {
        if (this.state.hasError) {
          // Рендер запасного UI при ошибке
          return <h1>Something went wrong.</h1>;
        }
    
        return this.props.children;
      }
    }
    
    export default ErrorBoundary;
  2. Использование Error Boundary:

    • Оберните компоненты, которые могут вызвать ошибки, в Error Boundary.
    import React from 'react';
    import ErrorBoundary from './ErrorBoundary';
    import MyComponent from './MyComponent';
    
    const App = () => (
      <ErrorBoundary>
        <MyComponent />
      </ErrorBoundary>
    );
    
    export default App;

Error Boundary позволяет обрабатывать ошибки в React-приложении, предотвращая их распространение и предоставляя возможность отображения запасного UI, обеспечивая более стабильное приложение.


Как обрабатывать ошибки в React-коде с хуками?

Ошибки синхронного рендера дочернего дерева перехватывает Error Boundary. Он не перехватывает ошибки обработчиков событий и отклонённые промисы из обычного асинхронного кода.

В эффекте или пользовательском хуке оборачивайте сам await в try/catch, проверяйте response.ok и сохраняйте ошибку в состоянии либо передавайте её библиотеке запросов. Отменяйте запрос в cleanup, если компонент может размонтироваться или параметры запроса измениться. Ошибку из обработчика события обрабатывайте в этом же обработчике.

Ограничения Error Boundary описаны в документации React.

Собеседования: React

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: React-разработчик, Frontend-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.