Задать вопрос
@evg34rozenber

Почему React начал выводить ошибку Cannot read property 'map' of undefined?

Захотел сделать приложение "фильмы". Нашел бесплатный api, вот он https://yts.mx/api/v2/list_movies.json
В компоненте хотел вывести жанры фильма. Для этого использовал map, сначала все прекрасно работало, React вообще не ругался. Но запустив сегодня код, то увидел, что он перестал работать.
вот код компонента
import React from 'react';
import "./MovieItem.css"

export default function MovieItem({id, title, genres, year, summary, poster}) {
    console.log(genres);
    return(
        <div className="movie__item">
            <img src={poster} className="movie__img" alt={title} title={title}/> 
            <div className="movie__column">
                <h3 className="movie__title">{title}</h3>
                <h5 className="movie__year">Год выхода: {year}</h5>
                <ul className="movie__genres">
                    {genres.map((el, index) => {
                        return <li key={index} className="movie__genres-item">{el}</li>
                    })}
                </ul>
                <p className="movie__summary">Описание: <br/>{summary.slice(0, 150)}...</p>
            </div>
        </div>
        
    );
}

Вот как получал get запрос
import React, { Component } from 'react';
import Movies from "./components/Movies/Movies";
import axios from "axios";
import "./App.css";


export default class App extends Component {

  state = {
    isLoading: true,
    movies: []
  }

  getMovies = async () => {
    const {data: {data: {movies}}} = await axios.get('https://yts.mx/api/v2/list_movies.json');
    this.setState({
      movies: movies,
      isLoading: false
    })
  }

  componentDidMount() {
    this.getMovies();
  }

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

    return (
      <section className="container">
          {isLoading ? 
          <div className="loader">
            <span>Загрузка...</span>
          </div>
          : <Movies movies={movies}/>
          } 
      </section>
    );
  }
}

А вот код компонента movie, где выводятся карточки со всеми фильмами
import React from 'react';
import MovieItem from "../MovieItem/MovieItem";
import "./Movies.css";

export default function Movies({movies}) {
    console.log(movies);
    return(

        <div className="movie">
            {movies.map(el => {
               return(
                <MovieItem 
                key={el.id} 
                id={el.id} 
                title={el.title} 
                genres={el.genres}
                year={el.year} 
                summary={el.summary} 
                poster={el.medium_cover_image}
                />
               )
            })}
        </div>
    );
}

По какой причине мой код перестал работать? И как исправить?
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • Академия Eduson
    React-разработчик
    2 месяца
    Далее
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
genres={el.genres || []}
Ответ написан
Комментировать
NevermindMe
@NevermindMe
Junior?
genres?. map((item, id) => .......) or { genres && ( genres.map(....) ) }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽