Why when I added await
inside for-loop
, it will throw me error? How should I fix it?
export default async function DetailsViewer({
}) {
const galleryList = [];
const metadata = []
const [data, setData] = useState()
useEffect(() => {
const getNFTDetails = async () => {
fetch("http://localhost:4000/getDetails").then(response => {
return response.json()
})
.then(posts => {
setData(posts)
})
.then((err) => {
console.log(err);
})
}
getNFTDetails()
}, []);
for (const a in data) {
metadata[a] = await fetchIPFSJSON(data[a].uri);
if (metadata[a].image) {
metadata[a].image = makeGatewayURL(metadata[a].image);
}
galleryList.push(
<Card
style={{ width: 200 }}
key={data[a].name}
title={
<div>
{data[a].name}{" "}
<a
target="_blank"
rel="noreferrer"
>
{/* <LinkOutlined /> */}
</a>
</div>
}
>
<img src={data[a].image} style={{ maxWidth: 130 }} />
</Card>,
);
}
return (
<div style={{ maxWidth: 820, margin: "auto", marginTop: 32, paddingBottom: 256 }}>
<StackGrid columnWidth={200} gutterWidth={16} gutterHeight={16}>
{galleryList}
</StackGrid>
</div>
)
}
Error
Error: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead. in NFTViewer (at App.jsx:271) in Route (at App.jsx:270) in Switch (at App.jsx:261) in Router (created by BrowserRouter) in BrowserRouter (at App.jsx:242) in div (at App.jsx:239) in App (at src/index.jsx:25) in ThemeSwitcherProvider (at src/index.jsx:24) in ApolloProvider (at src/index.jsx:2