J'essaie de faire des appels API ultérieurs pour obtenir des informations sur certains index financiers. Après chaque appel, je veux mettre à jour de indexObject afin qu'il ait toutes les données de tous les index que j'ai stockés sur les index ...
1 réponse
Le problème ici est que vous bouclez la requête, alors que le setState
n'est pas synchrone. Il est préférable de renseigner d'abord toutes les données, puis de définir l'état par la suite.
const [indexObject, setIndexObject] = useState({});
const handleFetchData = async () => {
const indexes = [
"^GDAXI",
"^BVSP",
"^NDX",
"^DJI",
"^GSPC",
"^IBEX",
"^HSI",
"^BSESN",
"^FTSE",
];
const resultData = {};
for(const index of index) {
const response = await axios.request(); // add your own request here
resultData[index] = response;
}
return resultData;
}
useEffect(() => {
handleFetchData().then(data => setIndexObject(data));
}, []);
Pourquoi j'utilise for of
? car forEach
ou .map
ne peuvent pas attendre une boucle asynchrone. Ou si vous souhaitez récupérer toutes les données simultanément, vous pouvez envisager d'utiliser Promise.all
Questions connexes
De nouvelles questions
reactjs
React est une bibliothèque JavaScript pour la création d'interfaces utilisateur. Il utilise un paradigme déclaratif basé sur les composants et vise à être à la fois efficace et flexible.