Если зависимости равны [roles] и roles остаётся undefined, повторный рендер сам по себе не перезапустит эффект.
Если roles равно undefined и компонент перерендерился — что будет происходить с useEffect?
Если зависимости равны [roles] и roles остаётся undefined, повторный рендер сам по себе не перезапустит эффект.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если зависимости равны [roles] и roles остаётся undefined, повторный рендер сам по себе не перезапустит эффект.
React сравнивает зависимости через Object.is, а undefined равен предыдущему undefined. Без массива зависимостей эффект запускается после каждого commit; с пустым массивом не зависит от roles. Размонтирование, повторное монтирование и проверки Strict Mode — отдельные случаи. Без кода нельзя выбрать один вариант безусловно.