我想通过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>);}}
答案 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响应以供进一步检查。