Непонятно, где у тебя console.log, но судя по всему, на рендере. Здесь получается два рендера. Первый с нулем, , второй после useLayoutEffect по причине изменения стейта. Второй рендер перезаписывает всё, что устарело после первого. Проблемы на первый взгляд нет.