Estoy tratando de almacenar una matriz de nombres de una respuesta json que contiene una matriz de objetos.
Por alguna razón, la matriz de impresión no tendrá nada dentro. ¿Es esta la forma correcta de hacerlo? No funciona por alguna razón, de lo contrario no hay errores.
Además, forEach es un bucle que ni siquiera se ejecuta una vez que lo probé.
useEffect(() => { instance.get('/') .then(function (response) { // handle success //console.log(response); console.log(response.data); (response.data).forEach(newValue=> { setArray(oldArray => [...oldArray,newValue.name]) } ) }) .catch(function (error) { // handle error console.log(error); }) .then(function () { console.log("printing array 1",Array); // always executed }); if(Array) console.log("printing array 2",Array); },[]);Prueba esto:
setArray([...oldArray, ...response.data?.map(item=>item.name)]); En lugar de actualizar su estado para cada elemento en la nueva matriz, solo obtenga todos los accesorios de name como una matriz de la nueva matriz usando el map y luego use el operador de distribución para combinar matrices nuevas y antiguas.