Не удается прочитать свойство undefined при использовании реакционных хуков - PullRequest
2 голосов
/ 22 мая 2019

Я получаю сообщение об ошибке «Невозможно прочитать свойство« карта »с неопределенным значением», но не могу понять, почему - карта не будет работать, поскольку «фильмы» не определены. Вы видите, что я делаю не так? Большое спасибо.


const Dashboard = () => {
  const discoverUrl = 'https://movied.herokuapp.com/discover';
  const [movieList, setMovies] = useState({ movies: [] });

  useEffect(() => {
    const getAllMovies = () => {
      fetch(discoverUrl)
        .then(response => response.json())
         .then(data => setMovies(data))
        }
        getAllMovies()

      }, [])

  return (
    <ul>
      {movieList.movies.map(movie => (
        <li>
          <p>{movie}</p>
        </li>
      ))}
    </ul>
  );
}

export default Dashboard```

TypeError: Cannot read property 'map' of undefined

Ответы [ 2 ]

5 голосов
/ 22 мая 2019

Данные ответа могут быть списком или undefined вам нужно сделать так:

setMovies(pre => ({
  ...pre,
  movies: data || []
}))
0 голосов
/ 22 мая 2019

Когда вы устанавливаете состояние, которое установлено setMovies (data), movieList будет равен data. Таким образом, вы потеряете свойство movie в movieList (не будет movieList.movies).

Так что либо инициируйте состояние, подобное этому

const [movieList, setMovies] = useState([]);

и сделать setMovies (данные).

Или установить состояние как

setMovies({ movies: [...data] })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...