Reactjs 试图设置react highcharts的状态,但它不是';不行吗?

Reactjs 试图设置react highcharts的状态,但它不是';不行吗?,reactjs,react-highcharts,Reactjs,React Highcharts,如标题所述,如何在react for highcharts中使用状态值设置数据?此.state.number的值为0/未定义 代码 getFirstMonthOpenEnhancements(){ fetch(`http://ca-fpscfb2:4000/1stMonthOpenedEnhancements?airline=${this.state.airlineName}&product=${this.state.airlineProduct}`) .then(res

如标题所述,如何在react for highcharts中使用状态值设置数据?此.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]);
 }

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); });
 }

设置
state.number
属性值时的代码在哪里?这样我们就会知道为什么它的0或未定义基本上是从api获取数据,然后设置状态,然后尝试获取数字,但数字总是0或未定义,然而,当我在render方法中放入this.state.number时,数字出现了。您是否验证从api返回的数据和
parseInt(response.data.total)
值不是0还是未定义?您可以通过插入
console.log(parseInt(response.data.total))在此.setState(…)之前是的,它是我从apiwhen获得的值,它是0/未定义?您显示的代码在
componentDidMount
期间启动,例如在第一次渲染()时启动(除非您的初始状态指定了一些
编号:…
,这意味着
此.state.number将在该渲染期间未定义)。然后它是一个异步获取,因此最终的setState将触发一个重新渲染器,此时将存在
this.state.number
。所以我们什么时候谈?另外,你能看看我在其他应用程序中遇到的另一个问题吗?它与这个问题无关,但是如果ud能够帮助解决这个问题那就太好了,:D,