Реагировать: data[0].toFixed не является функцией. (В 'data[0].toFixed(decimalPlaces)', 'data[0].toFixed' не определено)

Я хочу получить числовые значения через вызов API и представить их на графике с помощью «react-native-chart-kit», но его создание данных об ошибках [0].toFixed не является функцией. Как устранить эту ошибку?нажмите здесь, чтобы просмотреть ошибку

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


person SHARAYU YADAV    schedule 29.05.2020    source источник


Ответы (1)


Я не знаю react-native-chart-kit, но поскольку toFixed() является метод 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 для дальнейшей проверки.

person Sebastian B.    schedule 29.05.2020
comment
формат JSON выглядит следующим образом: [{tran_date:2020-01-01,val:0},{tran_date:2020-01-02,val:999}] - person SHARAYU YADAV; 30.05.2020
comment
Это содержимое responseJson или responseJson[0 (or 1)].val? - person Sebastian B.; 31.05.2020
comment
это содержимое responseJson - person SHARAYU YADAV; 01.06.2020