0
votes

Réact.js, typeError: this.state.movies.map n'est pas un problème de fonction

// Je ne suis pas bon en anglais, alors merci de comprendre.

Lorsque vous essayez d'utiliser une carte en recevant des données d'API, vous publiez un message pour trouver une solution car il existe une erreur de type. P >

Qu'est-ce qui ne va pas avec le code que j'ai écrit? p> xxx pré>

est-ce le problème? P>

Je pratique comment utiliser API. C'est dur. P>

class MoviesCall extends React.Component {
  state = {
    movies: [],
    list: [],
    Date: "",
    Type: ""
  };

  componentDidMount = async () => {
    await axios
      .get(endPoint)
      .then(res => res.data)
      .then(data =>
        this.setState({
          movies: data.boxOfficeResult,
          list: data.boxOfficeResult.dailyBoxOfficeList,
          Date: data.boxOfficeResult.showRange,
          Type: data.boxOfficeResult.boxofficeType
        })
      );
    console.log(this.state.movies);
    console.log(this.state.list);
    console.log(this.state.Date);
    console.log(this.state.Type);
  };

  render() {
    return (
      <div>
        {this.state.movies.map(movie => (
          <div key={movie.id}></div>
        ))}
      </div>
    );
  }
}


3 commentaires

data.boxofficeresult Quel type d'objet est-ce? Il est peu probable qu'il s'agisse d'une matrice, car sur les lignes suivantes, vous accédez à des propriétés telles que data.boxofficeresult.dailyboxofficelist . Et si ce n'est pas un tableau, il n'a pas de .map .


data.boxoficeresult.dailyboxofficeliste supprimé mais la même erreur apparaît. Je ne peux pas dire où est faux.


@ user11904800 Pouvez-vous faire un journal de console pour this.state.movies pour voir si les films sont tout type de tableau ou non?


3 Réponses :


1
votes

à partir de ce bloc, j'ai trouvé 3 problème

1) Ceci doit être Ceci

2) film doit être films

3) Liste doit être Liste xxx


0 commentaires

0
votes

Avant de définir l'état enregistre les données de la console et voyez son tableau ou non. utilisez-vous "ceci"? il devrait être "ceci" xxx


0 commentaires

1
votes

Peut-être que vous manquez le cas lorsque les données ne sont pas finies de chargement. À cette heure dans votre fonction code> code> doit être comme ceci:

render() {
  const { movies } = this.state;

  if (!movies || !Array.isArray(movies))
     return null;

  return (
      <div>
        {movies.map(movie => (
          <div key={movie.id}></div>
        ))}
      </div>
    );
}


0 commentaires