Estoy haciendo una aplicación web de valores.
Estoy almacenando una matriz de "cuenta" de un usuario falso mapeándola y devolviéndola a una tabla.
Sin embargo, quiero usar el "Símbolo" dentro de la matriz para realizar una llamada de búsqueda a una API.
Y muestra cuánto es el valor actual de las acciones.
Esto ayuda al usuario a comparar cuánto se compara el "TotalCost" con el valor actual de las existencias.
Esto es lo que tengo hasta ahora
const [account, setAccount] = useState([ { "Symbol": 'AAPL', "Shares": 1, "TotalCost": 130, }, { "Symbol": 'TSLA', "Shares": 1, "TotalCost": 1500, }, ]) <table> <tbody> {account.map((stocks)=> { const {Symbol , Shares, TotalCost} = stocks; return ( <tr> <td>{Symbol}</td> <td>{Shares}</td> <td>${TotalCost}</td> <td> {() => fetch("https://finnhub.io/api/v1/quote?symbol=" + Symbol + "&token=12345678910" ) .then(res=> res.json()) .then(data =>{ //how do I render data.c inside my table <td></td> tag return JSON.stringify(data.c) })} </td> </tr> ) })} </tbody> </table>La forma de 'Reaccionar', y también la forma correcta de hacer lo que está buscando, es la siguiente:
useEffect() . Si no está familiarizado con el gancho useEffect (o los ganchos en general), eche un vistazo a los documentos de React para useEffect .
Un componente que hace esto se vería así:
import { useState, useEffect } from "react"; function Stocks() { const [account, setAccount] = useState([ { Symbol: 'AAPL', Shares: 1, TotalCost: 130, }, { Symbol: 'TSLA', Shares: 1, TotalCost: 1500, }, ]); const [results, setResults] = useState([]); useEffect(() => { const fetchedResults = []; account.map(({Symbol, Shares, TotalCost}) => { fetch("https://finnhub.io/api/v1/quote?symbol=" + Symbol + "&token=12345678910") .then((res) => res.json()) .then((data) => fetchedResults.push({ Symbol, Shares, TotalCost, Content: data.c })); }); setResults(fetchedResults); }, []) return ( <table> <tbody> {results.map(({Symbol, Shares, TotalCost, Content}) => ( <tr> <td>{Symbol}</td> <td>{Shares}</td> <td>${TotalCost}</td> <td>{Content}</td> </tr> )) </tbody> </table> ) }Explicación:
results se almacenan en el estado en el que queremos que el componente se vuelva a representar cuando se hayan obtenido los resultados, que es para lo que es el estado.