Я строю архитектуру щас общую с нуля, и тут всплывает маленькие не заметные нюансы. Можно конечно не обращать внимания и путем эмпиризма, где код работает, там и писать логику. А я щас рыл понять ПОЧЕМУ так работает. И я нарочно создал такие ситуации чтоб понять кто "победит" когда две разные строки команды пытаются сделать редирект, кто победит в таком "споре".
Вот я сделал зардержку через промис, так вы говорите setCount ассинхронный, ок, логично, тогда setCount успевает дернуть useEffect, но оно дергается ПОСЛЕ основного редиректа в /click
А вот еще добавлю интересного
если внутри промис сделать setTimeout(()=>resolve(true), 0);
то есть сделать задержку промиса чуть дольше
Тогда useEffect также срабатывает, НО ДО основного редиректа. В итоге побеждает основной редирект, он в конце перезаписывает предыдущий useeffect редирект
Вот такие интересные штучки в Реакте.
Итог такой
1) если не делать никаких промисов, useEffect не работает
2) если делать промисы, тогда useEffect успевает ПОСЛЕ всех основных команд click eventa
3) если делать промис с задержкой, тогда useEffect также работает, но уже ДО команд клик эвента