DOM и React Senior Эффекты и жизненный цикл обновлено

Отмена запроса через AbortController

Условие

Компонент загружает данные через переданный load(id, signal). При смене id или размонтировании прошлый запрос должен отменяться сигналом, а ошибку AbortError нельзя показывать пользователю.

Что проверяют тесты

  • показывает данные

  • прошлый запрос отменяется сигналом

  • отмена не показывается как ошибка

Как подойти

Это сильная версия защиты от гонки: не просто игнорируем старый ответ, а прекращаем работу. Обязательный третий шаг - отфильтровать AbortError, иначе пользователь увидит «ошибку» при каждом быстром переключении. В связке с fetch: fetch(url, { signal }).

Подсказки: 3
  1. AbortController создаётся внутри эффекта, signal уходит в запрос.
  2. Очистка эффекта вызывает controller.abort().
  3. Отменённый запрос отклоняется ошибкой с именем AbortError - её надо отличать от настоящей.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.