Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问Axios数据(对象)_Javascript_Reactjs_Object_Promise_Axios - Fatal编程技术网

Javascript 访问Axios数据(对象)

Javascript 访问Axios数据(对象),javascript,reactjs,object,promise,axios,Javascript,Reactjs,Object,Promise,Axios,我想要这个中的“月度时间序列”数据。state={stockOne:[]}。 但是,由于“每月时间序列”api的数据格式在对象周围没有[],因此我很难访问数据。 是否有办法格式化此文件以访问数据并插入此.state 编辑:我可以在@Mohammed Ashfaq下面用答案来控制台.log(this.state.stockOne)和(this.state.stockOne[“2020-02-27”])。 但是,我无法将其传递给StockOne.js,因为this.props.StockOne返回空

我想要这个中的“月度时间序列”数据。state={stockOne:[]}。 但是,由于“每月时间序列”api的数据格式在对象周围没有[],因此我很难访问数据。 是否有办法格式化此文件以访问数据并插入此.state

编辑:我可以在@Mohammed Ashfaq下面用答案来控制台.log(this.state.stockOne)和(this.state.stockOne[“2020-02-27”])。 但是,我无法将其传递给StockOne.js,因为this.props.StockOne返回空[],this.props.StockOne[“2020-02-27”]返回未定义

import React from 'react';
import axios from 'axios';
import StockOne from '.././component/StockOne/StockOne.js'

const apiKey = '11111111111111';


class Main extends React.Component {
    constructor(props) {
        super(props);
          this.state={
              stockOne: []
          };    
    }

    componentDidMount(){
        axios.get(`https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=MSFT&apikey=${apiKey}`)
            .then(res=> 
                {this.setState({stockOne:res.data["Monthly Time Series"]},
                console.log(res.data["Monthly Time Series"]),  /*returns {},{},{},...*/
                console.log(res.data), 
                console.log(this.state.stockOne)  /*returns undefined */
                )
            })


    }


    render() {
        return (
            <>
                <StockOne stockOne={this.state.stockOne}/>
            </>
        )
    }
}

export default Main;
setState是一个异步函数,因此它不会更新状态 立即估价。如果要检查更新的值,则 将回调函数作为第二个参数传递给setState和print 该cb中的状态变量

componentDidMount(){
axios.get(`https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=MSFT&apikey=${apiKey}`)
。然后(res=>{
this.setState({stockOne:res.data[“每月时间序列”]},()=>{
log(res.data[“Monthly Time Series”]);/*返回{},{},{},{}*/
console.log(res.data);
console.log(this.state.stockOne);
})
})

}
能这么简单吗
this.setState({stockOne:[res.data[“Monthly Time Series”]]}
?@admcfajin不幸的是,不谢谢你。我现在可以控制台.log(this.state.stockOne)。但是它仍然是单独的{},{}。我如何进入[]数组,以便在特定的时间挑选出特定的?this.state.stockOne[2019-01-31]返回错误。是否有单独访问数据的方法?请尝试此.state.stockOne[“2020-02-27”]好的另一个问题。即使在函数中,此.state.stockOne[“2020-02-27”],我似乎无法访问stockOne.js中的此.props.stockOne[“2020-02-27”]。
{
"Meta Data": {
"1. Information": "Monthly Prices (open, high, low, close) and Volumes",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2020-02-27",
"4. Time Zone": "US/Eastern"
},
"Monthly Time Series": {
"2020-02-27": {
"1. open": "170.4300",
"2. high": "190.7000",
"3. low": "157.9800",
"4. close": "158.1800",
"5. volume": "790184525"
},
"2020-01-31": {
"1. open": "158.7800",
"2. high": "174.0500",
"3. low": "156.5100",
"4. close": "170.2300",
"5. volume": "555989763"
},

 ....}
}