Модуль 14 · Урок 55

Effects як external synchronization і safe cleanup

Effect синхронізує component з external system після commit. Якщо external system немає, derived calculation або interaction-specific logic зазвичай не потребують Effect.

useEffectDependenciesCleanupAbortController

Render, event чи Effect?

LogicМісце
Filter current listRender calculation
Submit purchase/searchEvent handler
Connect subscription/fetch for visible stateEffect або framework data layer

Effect setup повертає cleanup. Dependency list містить усі reactive values, які читає process; її не «обирають» для бажаної частоти. Щоб прибрати dependency, змініть surrounding code й доведіть, що value не reactive.

Strict Mode і async race

useEffect(() => { const controller = new AbortController(); load(controller.signal); return () => controller.abort(); }, [requestKey]);

Development Strict Mode виконує setup→cleanup→setup як stress test. Cleanup має дзеркально зупиняти request/subscription/timer. Для async state застосуйте AbortSignal та active/ignore guard, перевірте non-2xx, runtime shape, loading/error/empty/success і не дозвольте stale response перезаписати новішу.

Лабораторна

Запустіть local fixture app, зафіксуйте Effect contract, Strict Mode trace та шість race cases. Lab не робить external request і не зберігає credentials.

Завантажити React lab →

Офіційні джерела

Практична перевірка · урок 55 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Для чого useEffect?
2. Коли Effect не потрібен?
3. Де має бути purchase або search submit logic?