Cleanup вызывается перед повторным запуском эффекта с изменившимися зависимостями и при размонтировании. Обычный ререндер без изменения зависимостей его не вызывает.
Когда срабатывает cleanup-функция в useEffect? Что происходит при маунте и при ререндере компонента?
Cleanup вызывается перед повторным запуском эффекта с изменившимися зависимостями и при размонтировании. Обычный ререндер без изменения зависимостей его не вызывает.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Cleanup вызывается перед повторным запуском эффекта с изменившимися зависимостями и при размонтировании. Обычный ререндер без изменения зависимостей его не вызывает.
При маунте React выполняет setup эффекта. Если зависимости изменились, сначала выполняется cleanup предыдущего setup, затем новый setup. При размонтировании выполняется последняя очистка. Без массива зависимостей эффект повторяется после каждого соответствующего commit; с пустым массивом не зависит от ререндеров. В development Strict Mode возможен дополнительный цикл setup–cleanup–setup для проверки корректности очистки.