使用React挂钩时,无法读取未定义的属性



我得到的错误"无法读取未定义的属性'映射',但无法弄清楚为什么 - 地图将无法使用,因为'电影'不确定。你能看到我在做错什么吗?非常感谢。


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

您响应数据mybe a列表或undefined您需要这样做:

setMovies(pre => ({
  ...pre,
  movies: data || []
}))

设置setMovies(数据(的状态时,Movielist将等于数据。因此,您将在Movielist中丢失电影财产(不会有Movielist.Movies(。

因此,任何一个像这样的启动状态

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

和do setMovies(数据(。

否则将状态设置为

setMovies({ movies: [...data] })

相关内容

  • 没有找到相关文章

最新更新