У вас масса проблем из-за того, что вы не до конца понимаете как работает хук useEffect. У вас есть ф-я verifyAuthentication() - которая содержит в себе запросы, а значит она асинхронная. Но вы вызываете её внутри хука useEffect не используя её асинхронные возможности (await или .then()). Вместо этого вы пишите костыли с setTimeout которые работают через раз.
Хотите перерисовать компонент под новые данные? У вас для этого есть целых 3 способа: передать новые данные в пропс, изменить стейт или использовать массив зависимостей в хуке useEffect - выбор под ваши нужды.
К сожалению, в доках к реакту не очень подробно все расписано, да и на др ресурсах на русском мне не попадались толковые объяснения. Вот пару ссылок на буржуйском по которым можно понять как
работать в useEffect c асинхронным кодом и
как использовать массив зависимостей в useEffect. Надеюсь, вам поможет подняться на новый уровень.