reactjs - 获取数据反应 .map 不是函数
问题描述
为什么这段代码给我:TypeError: items.map is not a function
?
const [items, setItems] = useState([])
const url = 'https://rickandmortyapi.com/api/character/1'
useEffect(() => {
async function fetchEmployees() {
const response = await fetch(url)
const fetchedEmployees = await response.json(response)
setItems(fetchedEmployees)
}
fetchEmployees()
}, [])
return (
<div>
{items.map((element) => (
<li>{element.name}</li>
))}
</div>
)
}
解决方案
我在您的代码中看到了两个问题。
首先,API 链接“ https://rickandmortyapi.com/api/character/1 ”返回一个对象,而不是一个数组。您不能使用map
for object,因为map
是 Array 函数。重新检查 API 的 URL 并相应地调整您的代码以匹配您的值的形状。
其次,对于您的fetchEmployees()
功能,您只需要const fetchedEmployees = await response.json()
在这种情况下,我们鼓励您使用“打印调试”——console.log
到处寻找内部工作原理。例如,您可以将 a 放在console.log
这里以查看您得到了什么(一个对象),并且您应该了解为什么map
不处理它
async function fetchEmployees() {
const response = await fetch(url);
const fetchedEmployees = await response.json();
console.log("fetchedEmployess", fetchedEmployees);
setItems(fetchedEmployees)
}
``
推荐阅读
- python - 如何在python中使用广播计算矩阵的成对余弦距离
- python - Django - 处理多个不同级别的嵌套模型
- batch-file - 通过具有任何特定模式的文件夹
- assembly - 我的 mips 代码中的错误是返回 X 的倍数,其中 X 是 1、2、4、8、16 等
- ldap - 连接尝试失败,因为连接方没有正确响应 python
- excel - 即使找不到 csv 文件之一,如何提示程序继续读取 csv 文件夹中的其他 csv 文件?
- javascript - 与 Metamask web3.js 交互
- google-maps - 如何在颤动中使用底页设置谷歌地图?
- python - 我似乎无法让我的烧瓶应用程序显示我的 Form-flask_wtf
- java - 通知 Firebase PendingIntent 返回空值 - AndroidX