反应:无法读取未定义的属性“地图”

时间:2019-07-11 17:27:53

标签: javascript reactjs axios

代码为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;

2 个答案:

答案 0 :(得分:2)

最有可能发生的事情是您的render函数在api调用有时间完成之前正在运行,因此props.moviesundefined需要时是render 。您可以为props.movies设置默认值 一个空数组[],或者您可以先通过检查props.movies来检查是否定义了props.movies && props.movies.map

答案 1 :(得分:0)

访问电影对象时,请添加检查props.movies && props.movies.map(movie=>