如标题中所述,如何为高图表反应设置状态值的数据? this.state.number 的值为0 /未定义
代码
getFirstMonthOpenEnhancements(){
fetch(`http://ca-fpscfb2:4000/1stMonthOpenedEnhancements?airline=${this.state.airlineName}&product=${this.state.airlineProduct}`)
.then(response => response.json())
.then( response =>
this.setState(
{
number: parseInt(response.data.total)
}
))
.catch(err => console.error(err))
}
componentDidMount(){
this.getFirstMonthOpenEnhancements();
let chart = this.refs.chart.getChart();
chart.series[4].setData([this.state.number, 4, 4, 4]);
}
答案 0 :(得分:1)
this.state.number
属性是未定义的,因为您的API请求是异步的,因此当您请求this.state.number
的值是未定义的,因为您的API调用尚未返回。
有两种不同的解决方案,但在我看来,最优雅的方法是兑现承诺。
getFirstMonthOpenEnhancements(){
return new Promise((resolve, reject) => {
fetch(`http://ca-fpscfb2:4000/1stMonthOpenedEnhancements?airline=${this.state.airlineName}&product=${this.state.airlineProduct}`)
.then(response => response.json())
.then( response =>
return resolve(parseInt(response.data.total))
))
.catch((err) => { return reject(err) });
});
}
componentDidMount(){
this.getFirstMonthOpenEnhancements()
.then((someNumber) => {
let chart = this.refs.chart.getChart();
chart.series[4].setData([someNumber, 4, 4, 4]);
this.setState({ number: someNumber });
})
.catch((err) => { console.log(err); });
}