intermediate

Client-side fetching

Загружайте данные после render, обрабатывая abort, гонки, состояния загрузки и повторные попытки.

Клиентская загрузка начинается после mount — обычно в effects или обработчиках событий, либо через библиотеки, оборачивающие эти паттерны. Явно показывайте UI загрузки, ошибки и успеха. Прерывайте запросы при размонтировании или смене зависимостей через `AbortController`, чтобы избежать гонок.

Не загружайте данные в render. Дедуплицируйте параллельные запросы к одному ресурсу. Оцените, не уместнее ли server-state cache вместо state компонента.

					useEffect(() => {
  const ctrl = new AbortController();
  fetch(url, { signal: ctrl.signal }).then(/* ... */);
  return () => ctrl.abort();
}, [url]);
				

На интервью объясняйте концепцию на конкретном примере и называйте поведение, которое проверяют.

Типовые ошибки: скрывать поток данных, дробить компоненты чрезмерно и выполнять побочные эффекты в render.

Компромисс часто между ясностью и переиспользованием или между явными props и удобством.

Чеклист:

  • Не вызывайте fetch прямо в render.
  • Прерывайте устаревшие запросы.
  • Моделируйте состояния загрузки и ошибки.