Ok, tengo una función asíncrona, que obtiene datos sobre criptomonedas. Y cuando cargo la página por primera vez, los datos no están definidos. Pero, si cambio algo en el código (por ejemplo: establecer Enter insignificante), aparecen los datos.
¿Cómo cambio mi código para obtener datos con la página de inicio?
const getData = async () => { try { const resCoins = [] for (let coinName of coinsName){ let coin = await axios.get('https://api.coingecko.com/api/v3/coins/' + coinName) resCoins.push(coin.data) } let usd = {symbol: 'usd', market_data: {current_price: {}}} for (let currency of resCoins){ usd.market_data.current_price[currency.id] = 1 / currency.market_data.current_price.usd } resCoins.push(usd) setCoins(resCoins); } catch (error) { console.error(error); } };
For es una operación de sincronización. No esperarán respuesta. Entonces necesitas usar Promise.all()
const resCoins = await Promise.all( coinsName.map( (coinName) => axios .get("https://api.coingecko.com/api/v3/coins/" + coinName) .then((res) => res.data) ) )