Вам нужно дождаться обещаний, возвращаемых fetchIncomes
.
Попробуйте:
const fetchIncomes = async (id) => {
const data = await axios.get(`${API_URL}/${id}`);
return data.data;
};
const fetchData = async () => {
setLoading(true);
const res = await axios.get("${API_URL}");
// Create array of promises
const promises = res.data.map(el => {
return fetchIncomes(el.id)
.then(fromApi => {
return {
...el,
...fromApi
};
});
});
// Await all promises to resolve
const newData = await Promise.all(promises);
// Update state with new data
setData(newData);
setLoading(false);
};
Примечание. Если вы хотите, вы также можете использовать asyn c -aait для Ваш массив обещаний:
const promises = res.data.map(async (el) => {
const fromApi = await fetchIncomes(el.id);
return {
...el,
...fromApi
};
});