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

Я хочу получить числовые значения через вызов 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>);}}

1 Ответ

0 голосов
/ 29 мая 2020

Я не знаю 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 для дальнейшей проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...