代码为here。
我要做什么:
使用Axios提取时,尝试将电影列表显示在应用程序右侧的区域。
我不确定这是否是一个通过的道具问题,还是其他原因。有什么提示吗?
import React from "react";
import Card from "@material-ui/core/Card";
import Grid from "@material-ui/core/Grid";
import "../Movie/_movie.scss";
const Movie = props => {
return (
<div>
<Grid container>
<Grid item xs={12} md={12}>
<Card>
<h3>Movies should show up here</h3>
<ul>
{props.movies.map(movie => (
<li key={movie.id}>
<img
src={`https://image.tmdb.org/t/p/w185/${movie.poster_path}`}
/>
<h3>{movie.original_title}</h3>
<p>Date: {movie.release_date}</p>{" "}
<p>Rating: {movie.vote_average}/10</p>
<p>{movie.overview}</p>
</li>
))}
</ul>
</Card>
</Grid>
</Grid>
</div>
);
};
export default Movie;
答案 0 :(得分:2)
最有可能发生的事情是您的render
函数在api调用有时间完成之前正在运行,因此props.movies
在undefined
需要时是render
。您可以为props.movies
设置默认值
一个空数组[]
,或者您可以先通过检查props.movies
来检查是否定义了props.movies && props.movies.map
。
答案 1 :(得分:0)
访问电影对象时,请添加检查props.movies && props.movies.map(movie=>