Логотип YeaHub

База вопросов

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

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Suspense, Error Boundary, React, async rendering, error handling

Как Suspense взаимодействует с Error Boundary для обработки состояний загрузки и ошибок?

Проверяет понимание совместной работы Suspense и Error Boundary для обработки асинхронных состояний загрузки и ошибок в React.

Короткий ответ

Suspense отображает fallback-компонент во время загрузки данных, а Error Boundary ловит ошибки, возникшие в дочерних компонентах, включая ошибки при загрузке. Они работают вместе: Suspense управляет состоянием загрузки, а Error Boundary — состоянием ошибки. Если в процессе загрузки возникает ошибка, она пробрасывается в ближайший Error Boundary, который отображает UI ошибки. Это позволяет разделить логику загрузки и обработки ошибок.

Длинный ответ

Как Suspense и Error Boundary работают вместе

Suspense и Error Boundary — это два механизма React для управления асинхронными состояниями. Suspense отвечает за отображение запасного UI (например, спиннера) во время загрузки данных, а Error Boundary перехватывает ошибки в дочерних компонентах и показывает fallback-интерфейс ошибки. Они могут быть вложены друг в друга, чтобы обрабатывать разные сценарии.

Пример совместного использования

Рассмотрим компонент, который загружает данные с помощью Suspense. Если загрузка завершается ошибкой, она пробрасывается в ближайший Error Boundary.

import React, { Suspense } from 'react';
import { ErrorBoundary } from 'react-error-boundary';

const DataComponent = React.lazy(() => import('./DataComponent'));

function App() {
  return (
    <ErrorBoundary fallback={<h2>Ошибка загрузки</h2>}>
      <Suspense fallback={<div>Загрузка...</div>}>
        <DataComponent />
      </Suspense>
    </ErrorBoundary>
  );
}

Здесь Suspense показывает "Загрузка..." пока DataComponent не будет готов. Если при загрузке произойдет ошибка, ErrorBoundary отобразит "Ошибка загрузки".

Порядок обработки

  • Suspense перехватывает промис, брошенный компонентом, и показывает fallback.
  • Если промис отклоняется (ошибка), React пробрасывает исключение вверх по дереву.
  • Error Boundary ловит это исключение и отображает свой fallback.

Таким образом, Suspense и Error Boundary не конфликтуют, а дополняют друг друга: первый управляет состоянием загрузки, второй — состоянием ошибки.

Вывод

Используйте Suspense для отображения загрузки и Error Boundary для обработки ошибок. Это разделение упрощает поддержку кода и делает UI более предсказуемым.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

  • React

    React

Ключевые слова

#Suspense

#Error Boundary

#React

#async rendering

#error handling

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию