javascript - 使用 useEffect 调用 API。当尝试映射用户时,它说 TypeError: Cannot read property 'map' of undefined
问题描述
import logo from './logo.svg';
import './App.css';
import { useEffect, useState } from 'react';
import User from './components/User/User';
function App() {
const [user, setUser] = useState([]);
useEffect(() => {
// Create an scoped async function in the hook
async function loadData() {
const response = await fetch("https://randomuser.me/api/?results=10");
const data = await response.json();
setUser(data.results);
}
loadData()
}, [])
console.log(user)
return (
<div className="App">
<ul>
{
user && user.results.map(usr => <User user={usr}></User>)
}
</ul>
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
我正在使用 useEffect 调用 API。在此之前,我使用 useState 命名用户设置了一个 const,其默认值为空数组。在 useEffect 中,我使用 setUSer() 设置用户值。但是当我映射用户时,它给出了一条消息 TypeError: Cannot read property 'map' of undefined 的平均错误;
解决方案
您似乎不太可能同时需要setUser(data.results)
和user.results.map
- 就像data.results.results.map
. 我想你想要user.map
,然后你也可以放弃user &&
检查,因为.map
仍然可以在空数组上工作。
推荐阅读
- wordpress - 如何删除在wordpress上注入的脚本
- android - React Native 键盘事件不适用于 android:windowSoftInputMode="adjustNothing"
- android - 如何将数据片段传递给android studio中的其他片段活动
- scala - 此 Akka 流有时无法完成
- julia - 安装llvm时,Julialang:错误`错误:LoadError:LoadError:无法打开libLLVM!`
- c++ - 错误:'{' token { 之前的预期 unqualified-id
- android - 一些奥利奥设备没有收到推送通知
- python - 从 Google API 中提取格式化地址
- database - MongoDB合并文档
- vxworks - 如何将控制台输出重定向到 VxWorks shell 中的文件?