javascript - React 状态返回一个函数数组
问题描述
我正在构建一个使用 API 的应用程序,我正在调用 151 个 API 调用,然后希望将每个结果作为对象返回到我的状态数组。
代码如下,当我记录结果时,我得到一个“newPokemon”回调函数数组,而不是数据。
const fetchPokemon = useCallback(async () => {
setLoading(true)
try {
for (let i = 0; i < numbers.length; i++) {
const response = await fetch(`${url}${numbers[i]}`)
const data = await response.json()
const newPokemon = () => {
const {
name,
order,
height,
} = data
return {
name,
order,
height,
}
}
setPokemon((prevState) => [...prevState, newPokemon])
}
} catch (error) {
console.log(error)
setLoading(false)
}
}, [])
有人可以帮忙吗?如果我在 API 调用下面调用 setPokemon 并且数据有效,但在每次迭代时都会被覆盖,因此状态将永远是循环结束时的一个对象,而不是完整的数据集。到目前为止,我尝试了多种设置状态的语法无济于事
setPokemon(newPokemon)
先感谢您
解决方案
您声明了一个名为的新函数newPokemon
,然后将其插入到状态中,这就是您在状态中获得函数数组的原因。您需要插入函数执行结果:
setPokemon((prevState) => [...prevState, newPokemon()])
推荐阅读
- spring - spring mvc:自定义查询的 jpa 存储库错误
- php - Envoyer mkdir 问题
- xaml - ListView 仅适用于 Android 错误
- python - Python:使用 write() 函数输出三个变量
- sql - 如何在一个查询中从两个表中查找缺失的记录?
- node.js - 使用 nodered 从 dynamodb 收集数据
- javascript - 提交错误后记住单选选项
- python - 根据条件执行矩阵乘积的最佳方法
- ruby - 将 selenium - rubygems 测试添加到 azure dev-ops 管道
- python - pandas - 将数据附加到系列,同时增加日期时间索引