Не удается получить конкретный элемент из массива. Реагировать / Redux

Не знаю, в чем причина, но я исправил ее, следуя инструкциям на этой странице. Кажется, все нормализовано, выполнив полную переустановку

Завершить удаление vscode

0
задан Peter 18 January 2019 в 22:39
поделиться

3 ответа

Почему бы вам не получить доступ

{this.props.movie.title}

Как

{this.props.movie[0].title}

Мне кажется более логичным. И это может быть решением.
поправьте меня, если я ошибаюсь.

И не могли бы вы также console.log {this.props.movie}

0
ответ дан Drarula 18 January 2019 в 22:39
поделиться

Причина в том, что this.props.movies не определен при первом рендере), пока вы не сделаете вызов fetchMovies).

Попробуйте сначала проверить, существует ли он так:

class HomePage extends Component {
  componentWillMount() {
    this.props.fetchMovies();
  }

  render() {
    if (this.props.movies && this.props.movies[0]) {
      const movie = this.props.movies[0];
      return (
        <div>
          <Banner movies={this.props.movies} movie={movie} />
          <Movies movies={this.props.movies} />
        </div>
      );
    } else {
      <div>Loading...</div>;
    }
  }
}
0
ответ дан Scott McCulloch 18 January 2019 в 22:39
поделиться

Изначально фильмы могут быть пустым массивом, и, поскольку вы обращаетесь к нулевой позиции индекса, вы должны проверить ее длину перед доступом к нулевому индексу.

Измените

  const movie = this.props.movies[0];

на

  if(this.props.movies.length){
      const movie = this.props.movies[0];
      console.log(movie);
 }

Поскольку фильмы всегда являются массивом, поэтому проверка их длины напрямую решит проблему

0
ответ дан Hemadri Dasari 18 January 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: