setServiceSelected повторно отображает компонент, поэтому в этой строке будет старое значение serviceSelected:
const UploadProspectInfo = await UploadInfo({service: serviceSelected})
Таким образом, у вас есть два варианта, если вы хотите сохранить значение serviceSelected в состоянии (для других целей, кроме вызов API) вы должны использовать useEffect следующим образом:
useEffect(() => {
if(serviceSelected){
UploadInfo({ service: serviceSelected })
.catch(function (e) {
alert(e.message);
});
}
}, [serviceSelected]);
/// first runs the check, then makes an api call.
function completeApplication() {
setShowSubmitForm(true);
checkServicesSelected();
setShowThankYou(true);
}
, но если вы не хотите сохранять в состоянии, вы можете сделать функцию checkServicesSelected чистой и вернуть выбранную службу вместо сохранения в состоянии.