Я был сильно не прав, useEffect не вызывается лишний раз.



Очень стыдно, простите 🙃



Избыточно перевызываться могут только хуки мемоизации.



За поправку спасибо @BuggyTheClown.



Но я еще подкину интересного по теме: Design decision: why do we need the stale closure problem in the first place? Старый и до сих пор не закрытый ишьес, в котором можно найти много занятный примеров. Может, повычитываю его потом повнимательней и скину сюда самое интересное.



UPD: useEffect без зависимостей все же может вызываться дважды в девелопе со стрикт модом.