React:data [0] .toFixed不是函数。 (在“ data [0] .toFixed(decimalPlaces)”中,“ data [0] .toFixed”未定义)

时间:2020-05-29 08:11:36

标签: javascript reactjs api react-native react-native-chart-kit

我想通过API调用获取数值,并使用“ react-native-chart-kit”在图中表示它们,但其产生的错误数据[0] .toFixed不是函数。如何解决此错误?click here to view error

class SecondActivity extends Component {

 constructor(props){
   super(props);
   this.state={a:"",b:""}
 }

 componentDidMount(){
   this.graph = setInterval( () => this.GetGraph(),1000);
 }

 GetGraph(){
   var jsondata;
  fetch('api here', {
    method: 'GET'
 })
 .then((response) => response.json())
 .then((responseJson) => {
   
   this.setState({
       jsondata: responseJson,
       a:responseJson[0].val,
       b:responseJson[1].val,})
   }) 
 .catch((error) => {
    console.error(error);
 });   } 

  render() {
      if(!this.state.a) {
    return <ActivityIndicator/>
  }
    return (
      <View>
        <LineChart
          data={{
            labels: [
              '1',
              '2', ],
            datasets: [
              {
                data: [
                  this.state.a,
                  this.state.b,                                 
                ],
              },                ],              }}
          width={Dimensions.get('window').width} 
          height={250}
          yAxisLabel="a"
          yAxisInterval={1}/>
      </View>);}}

1 个答案:

答案 0 :(得分:0)

我不知道react-native-chart-kit,但是由于toFixed()method on Number,所以我认为responseJson[0].val和/或responseJson[1].val可能包含(某些?)其他值然后是数字。

根据数据,一种变通方法 可能是数字转换:

this.setState({
    jsondata: responseJson,
    a:responseJson[0].val.map(v => { /* return v converted to number */ },
    b:responseJson[1].val.map(v => { /* return v converted to number */ }
}) 

我在这里不提供转换。在不知道数据中可能存在的价值的情况下,任何建议都可能是有损失的(或完全是错误的)。

第二,如果希望服务器发送号码,则应该发送号码。这可能是一个错误,但也可能有发送号码的原因,例如以便能够高精度提交数字或无损发送定点小数。在这种情况下,您必须小心如何在JavaScript中使用这些值。

如果这不是解决方案,则应提供原始JSON响应以供进一步检查。