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



我正在向API请求某个日期范围内的加密货币价格,并将结果存储在数组中。 目标是在页面加载时用这些价格填充折线图,但我无法弄清楚为什么pricesArrconsole.log时打印,但如果我尝试this.setState({dataArr: pricesArr})那么我会得到一个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})
}

最新更新