Recebo alguns dados de uma chamada de API e os coloco em um estado. Então eu uso essa variável de estado em outra função para filtrar alguns dados. Quando o usuário abre a interface pela primeira vez, os dados não são exibidos porque a função de sincronização obtém os dados vazios do estado. Queria saber como esperar dados assíncronos para começar a renderizar a função sync no React Native. Já tentei colocar a função evAnswers
em um setTimeout
, mas não funcionou.
Aqui está o código:
const getEvaluationsQuestionsByOrganizations = async (evalId) => {
const response = await apiStandarts.get(`/evaluation-questions?organization_evaluation=${evalId}`);
setEvQuestion(response.data);
};
const evAnswers = () => {
const evAnswers = questions.map(q => {
return evQuestion?.map(ev => {
return q.question_options.find(i => i.id === ev.questOptionId)
});
});
const filterAnswers = evAnswers.map(q => {
return q?.filter(Boolean)
})
const answersToObject = filterAnswers.map(item => {
return convertArrayToObject(item)
});
const arr = {...answersToObject}
const obj2 = Object.fromEntries(
Object.entries(arr).map(([key, value]) => [key, value])
)
const obj3= Object.values(obj2).map(item => {
return {[item.question]: {...item}}
})
const savedAnswers = convertArrayToObject(obj3);
console.log(savedAnswers)
setAnswers(savedAnswers)
}
useEffect(() => {
getEvaluationsQuestionsByOrganizations();
evAnswers();
}, [])