【发布时间】:2020-07-10 03:02:11
【问题描述】:
我已经尝试了其他几种方法来执行此操作,例如
How to read a nested JSON in React?
Can't access nested JSON Objects in React
当我点击“搜索”时,我正在尝试查询 API。目前,当我单击“搜索”时,API 会查询正确的 URL,但我无法访问返回的数据。发回的数据如下所示:
{
"option_activity": [
{
"id": "5f033b253c8cf100018a312f",
"bid": "0.6",
"ask": "1.0",
"midpoint": "0.8",
"updated": 1594047269
},
{
"id": "5f033b253c8cf100018a312f",
"bid": "0.6",
"ask": "1.0",
"midpoint": "0.8",
"updated": 1594047269
},
有数百个这样的项目。它在控制台中的样子:
我在做什么来查询 api:
fetchData() {
var val = this.state.searchedValue;
var url = "URL/TO/API"
fetch(url)
.then(res => res.json())
.then((res) => {
const itemsList = res.option_activity;
this.setState({
items: itemsList
},
function () {
console.log(itemsList);
}
);
// console.log(this.state.items)
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
console.log(error);
},
// console.log(this.state.items)
)
}
当网络记录来自 API 的响应时,控制台日志只为 this.state.items 记录一个空数组“[]”,该数组被初始化为一个空数组。如何将“option_activity”的内容保存到数组“items”中,通过该数组访问id、bid、ask、midpoint等?
因此,items[0] 可以访问 items[0].id、items[0].midpoint 等。
提前致谢
解决方案在正确标记答案的 cmets 中
【问题讨论】:
-
这看起来应该可以工作,并为每个元素提供一个
id数组,因此似乎没有足够的代码来重现问题。如果您想要完整的结构,请删除map调用。你有任何错误吗?唯一的console.log位于错误处理程序中,因此如果它确实触发,那将是空的。 -
@Santoshi24 ,setState 方法是异步操作,console.log 将只打印一个空数组,因为那是初始状态。,您可以使用回调来查看状态是否正在更新
-
@Satoshi24 您的
console.log发生在错误函数中,您确定在将这些项目设置为状态之前没有发生错误吗? -
@HarmandeepSinghKalsi 使用回调会产生相同的空数组。
-
@RyanWilson 出现登录错误。删除它并通过回调记录仍然会产生一个空数组
标签: javascript reactjs