I am able to get data back from my api call. But when I try to map it, I get an images.map is not a function. I consoled log the data to make sure it is an array
Here is my code
import { useState, useEffect, useRef } from "react";
import axios from "axios";
import DisplayData from "./DisplayData";
function Home() {
const [images, setImages] = useState({});
useEffect(() => {
const getApi = async () => {
const tempData = await axios.get(
"https://api.nasa.gov/mars-photos/api/v1/rovers/curiosity/photos?sol=10&api_key="
);
setImages(tempData.data.photos);
console.log(tempData.data.photos);
console.log(images);
// // console.log(typeof( images));
images.forEach(element => {
console.log(element);
});
};
getApi()
}, []);
if (!images) {
return <h1>Waiting</h1>;
} else {
return (
<div>
<h1>Home</h1>
{images.map((item) => (
<DisplayData key={images.id} images={images} />
))}
</div>
);
}
}
export default Home;
const [images, setImages] = useState({});toconst [images, setImages] = useState([]);. Second - setImages does not updateimagesimmediately, soconsole.log(images);just aftersetwill not write down new valuesuseEffectwith dependency onimagesand do yourforEachthere (if you indeed want to do something after it changed).