DOM и React Senior Эффекты и жизненный цикл обновлено
Гонка асинхронных запросов
Условие
Хук useData(load, id) вызывает load(id) при смене id и кладёт результат в состояние. Если id сменился, пока запрос летит, старый ответ применяться не должен.
Что проверяют тесты
кладёт результат
медленный старый ответ не перетирает новый
Как подойти
Гонка запросов - самый частый баг реального фронта и любимый вопрос на собеседовании. Флаг canceled в замыкании эффекта: очистка помечает эффект неактуальным, и пришедший позже ответ отбрасывается. Промис при этом не отменяется - для настоящей отмены нужен AbortController и signal у fetch.
Подсказки: 2
- Очистка эффекта вызывается перед следующим запуском - используй это.
- Флаг в замыкании эффекта: после очистки результат применять нельзя.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.