Проблема виникає не через виклики setState. Здається вам потрібно ознайомитись з
цією частиною документації. І функцію setUser простіше переписати повністю. Зроби з цієї функції окремий компонент, який буде рендерити модалку. І в рендері батьківської функції використай тернарний оператор. Щось накшталт
{(!user.firstVisit?<SetUser/>:null)}
Адже вся ідея реакта полягає в розбитті коду на невеликі компоненти.