reactjs - 使用反应钩子时无法读取未定义的属性
问题描述
我收到错误“无法读取未定义的属性 'map'”,但无法找出原因 - map 无法工作,因为 'movies' 未定义。你能看出我做错了什么吗?非常感谢。
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 一个列表,或者undefined
您需要这样做:
setMovies(pre => ({
...pre,
movies: data || []
}))
推荐阅读
- php - 在 WooCommerce 订单详细信息页面中显示订单状态历史记录
- c# - C# 登录表单 - 从 Form1 登录后检索与表单 2 中的用户名对应的数据库值
- python - 将字段更改为只读后,表单显示 pk 而不是 value/django 表单
- python - Python“unittest”模块根本不工作
- sql - 如何将信息从导入表分发到模型表?
- reactjs - 为什么切换到 TypeScript 时 Gsap-TimelineLite 会导致 Object is not extensible?
- python-3.x - python中的随机森林可视化
- javascript - 数组中的随机对象可以被拾取一次
- php - Laravel 中间件多角色
- javascript - 浏览器 API 强制浏览器缓存忘记图像?