Hola, estoy tratando de obtener algo de json de una API y luego completar una tabla, cosas bastante simples. Lo que sucede es que puedo ver que el estado de "tableData" se actualiza a medida que ingresa cada nueva fila, también estoy iniciando sesión cada vez que se actualiza "tableData", pero tal vez .5 segundos después de que todo haya terminado, mi "tableData" está vacío nuevamente (ver capturas de pantalla de la consola)
const [bigChartData, setbigChartData] = React.useState("data1"); const [tableData, setTableData] = React.useState([]); const setBgChartData = (name) => { setbigChartData(name); }; const getData = () => { axios.get("URL") .then(res => { const data = res.data.items.forEach(item => { setTableData(oldData => [...oldData, { data: [ { text: item.title }, { text: "asd" + item.url }, { text: "some links..." } ] }]); }); }) .catch(err => console.log(err)); setTimeout(function () { console.log(tableData); }, 3000); } useEffect(() => { getData(); }, []); useEffect(() => { console.log("Table data updated:"); console.log(tableData); }, [tableData]);Creo que no debería iterar a través de cada fila dentro del método getData (), en lugar de eso, intente seguir el código
const getData = () => { axios.get("URL") .then(res => { const data = res.data.items.map(item => { return{ data: [ { text: item.title }, { text: "asd" + item.url }, { text: "some links..." } ] }; }); setTableData(data) }).catch(err => console.log(err)); } o si ya tiene algunos datos en tableData , entonces
setTableData([...tableData, data])