gpt4 book ai didi

javascript - 对象在控制台中打印,但无法使用它来设置状态 - ReactJS

转载 作者:行者123 更新时间:2023-12-03 01:31:55 25 4
gpt4 key购买 nike

我正在向 API 请求某个日期范围内的加密货币价格,并将结果存储在数组中。目标是在页面加载时用这些价格填充折线图,但我一直无法弄清楚为什么在 console.log 时打印 pricesArr但如果我尝试 this.setState({dataArr: ratesArr}) ,则会收到 TypeError: Cannot read property 'setState' of undefined.

pricesArr 中的对象在控制台中打印,如下所示:

[{USD: 7629.4, EUR: 6503.14}, {USD: 6754.4, EUR: 5432.14} ... ]



class App extends Component {

constructor(props) {
super(props);
this.state = {
dataArr:[]

}
}


getData(){

var url = 'https://min-api.cryptocompare.com/data/pricehistorical?fsym=BTC&tsyms=USD,EUR&ts='

let pricesArr = []
for (let i=1; i <= 30; i++) {
const num = i.toString()
const date = new Date('2018.06.' + num)
const unixTimestamp = date / 1000
const api_url = url + unixTimestamp

if (i % 5 === 0 || i === 1) {
axios.get(api_url)
.then(res => {
var obj = res.data['BTC']
pricesArr.push(obj)
})
}
}

this.setState({dataArr: pricesArr})
}

componentDidMount () {
this.getData()
}


render() {
return (
<div>
Hi
</div>
);
}
}

export default App;

最佳答案

奇怪的是你的this未定义。试试这个。

  getData = () => {

var url = 'https://min-api.cryptocompare.com/data/pricehistorical?fsym=BTC&tsyms=USD,EUR&ts='

let pricesArr = []
for (let i=1; i <= 30; i++) {
const num = i.toString()
const date = new Date('2018.06.' + num)
const unixTimestamp = date / 1000
const api_url = url + unixTimestamp

if (i % 5 === 0 || i === 1) {
axios.get(api_url)
.then(res => {
var obj = res.data['BTC']
pricesArr.push(obj)
})
}
}

this.setState({dataArr: pricesArr})
}

关于javascript - 对象在控制台中打印,但无法使用它来设置状态 - ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com