【发布时间】:2021-11-03 16:04:31
【问题描述】:
您好,我是新来的反应并开始学习新东西。我实际上陷入了一种我知道如何实现解决方案但我不知道实现部分的情况。
我正在尝试通过 Await Async 使用 API 并在我的卡中显示数据。我可以在控制台日志中看到结果,但在卡片中看不到。
据我所知,我必须使用地图功能将数据与我的卡映射以查看所有数据。如有错误请指正。
另外,如果您可以让我知道接下来需要做什么,请查看我的代码以及效果如何。
import React, { useEffect, useState } from "react";
import {
Button,
Card,
CardActionArea,
CardActions,
CardContent,
CardMedia,
} from "@material-ui/core";
const cardStyle = {
cardMain: {
maxWidth: "300px",
maxHeight: "300px",
margin: "10px",
},
cardImage: {
height: "150px",
backgroundImage:
"url(" +
"https://images.unsplash.com/photo-1517971129774-8a2b38fa128e?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80" +
")",
marginLeft: "7px",
marginRight: "7px",
marginTop: "5px",
},
};
const Produts = () => {
const [movieData, setMovieData] = useState([]);
const getMovieList = async () => {
const url =
"http://api.themoviedb.org/3/search/movie?api_key=myapikey&query=Avengers";
const response = await fetch(url);
try {
const responseJson = await response.json();
console.log(responseJson);
setMovieData = responseJson.results;
} catch (err) {
console.error(err);
}
};
useEffect(() => {
getMovieList();
}, []);
return (
<>
<Card style={cardStyle.cardMain}>
<CardActionArea>
{setMovieData.original_title}
<CardMedia style={cardStyle.cardImage}>
{setMovieData.original_image}
</CardMedia>
<CardContent>{setMovieData.original_date}</CardContent>
</CardActionArea>
<CardActions style={cardStyle.cardButton}>
<Button>Watch</Button>
<Button>Like</Button>
<Button>Rent</Button>
</CardActions>
</Card>
</>
);
};
export default Produts;
非常感谢任何帮助或建议。
【问题讨论】:
-
你为什么写
setMovieData = (responseJson.results)?具体来说,为什么是等号?setMovieData是您调用的函数,用于更新状态。见daveceddia.com/usestate-hook-examples -
setMovieData是一个函数。所以将结果作为参数传递 -setMovieData(responseJson.results)。同样在您的 jsx 代码中,即在 return 中,您应该使用包含实际值的movieData而不是setMovieData这是一个函数
标签: javascript arrays reactjs api mern