我正在尝试访问JSON对象数组的特定元素。要测试,我只需:
{console.log(this.state.stockCharts)}
这将返回(在浏览器中):
这很棒,但是现在我想访问一个特定的元素。说第一个要素。我输入:
{console.log(this.state.stockCharts[0])}
浏览器就像:nah mate
undefined
这可能真的很简单,但是在过去的45分钟里,我一直在用键盘敲打我的头,但没有任何效果。谢谢大家!
编辑1(对于Akrion)
我用来访问API的查询是:
https://www.alphavantage.co/query?function=TIME_SERIES_WEEKLY&symbol=MSFT&apikey=demo
这是我从电话中得到的回馈:
我两次调用此API,并在收到响应后将其推送到我的stockCharts数组:
this.state.stockCharts.push(result)
编辑2(适用于初学者)
我将状态初始化为通常的状态:
this.state = {
stockCharts: []
}
答案 0 :(得分:3)
我已经使用本地提供的api进行了验证,并且能够获取数据。
不建议您将api响应推送到stockCharts的第一件事。这意味着不建议直接更改状态。
您可以通过以下方式推送api响应
this.setState(prevState => ({
stockCharts: [...prevState.stockCharts, result]
}));
现在处于渲染状态
render(){
this.state.stockCharts.map((data, i) => {
console.log("data", data); // this will give each object
console.log("Meta Data", data["Meta Data"]); //This will give meta data information
console.log("Weekly Time Series", data["Weekly Time Series"]);// this will print weekly time information
});
return(
)
}
这是您的期望吗?
答案 1 :(得分:1)
这可能是因为您突变了不推荐的状态。
尝试而不是打电话给this.state.stockCharts.push(result)
来做this.setState({stockCharts: [...this.state.stockCharts, result]})