Reactjs 火花线-收到NaN

Reactjs 火花线-收到NaN,reactjs,sparklines,Reactjs,Sparklines,试着弄明白。 也就是说,到了应该制作火花线的时候了。但由于某些原因,它不会显示该值。 有什么不对劲吗 JSON: 代码: 类CountMain扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ 职位:[] }; } componentDidMount(){ this.fetchPost(); this.timer=setInterval(()=>this.fetchPost(),5000) } 组件将卸载(){ clearInterval(这个计时器);

试着弄明白。 也就是说,到了应该制作火花线的时候了。但由于某些原因,它不会显示该值。 有什么不对劲吗

JSON:

代码:

类CountMain扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ 职位:[] }; } componentDidMount(){ this.fetchPost(); this.timer=setInterval(()=>this.fetchPost(),5000) } 组件将卸载(){ clearInterval(这个计时器); } 异步fetchPost(){ 取('https://example.com/json') 。然后(res=>{ 返回res.json(); }) 。然后(数据=>{ 这是我的国家({ 职位:数据 }); }) .catch(错误=>{ 控制台日志(err); }); } render(){ const playersCount=this.state.post.length==0?:{this.state.post[0].playersCount}; const playersCountToday=this.state.post.length==0?:{this.state.post[0].playersCountToday}; const playersCountAll=this.state.post.length==0?:{this.state.post[0].playersCountAll}; const countDailyChecksAll=this.state.post.length==0?0:this.state.post[0].countDailyChecksAll.join(','); //console.log(countDailyChecksAll); 返回( 试验柱
  • //这是一个线路错误
  • {playersCountAll}
) } } 错误:

警告:收到
cy
属性的NaN。如果这是预料之中的,, 将值强制转换为字符串


错误:属性cy:预期长度,“NaN”


react dom.development.js:2323错误:属性点: 预期数字为“6南”


console.log输出:

41125,68,26,41,41,66


我做错了什么?

在react中,您应该在state中定义动态变量

状态是一个JavaScript对象,它存储组件的动态数据并确定组件的行为。因为状态是动态的,所以它使组件能够跟踪渲染之间的更改信息,并使其具有动态性和交互性

例如,而不是

const countDailyChecksAll = this.state.post.length === 0 ? 0 : 
this.state.post[0].countDailyChecksAll.join(',');
使用类似于:

 this.setState({countDailyChecksAll: this.state.data[i].countDailyChecksAll})

在react中,您应该在状态中定义动态变量

状态是一个JavaScript对象,它存储组件的动态数据并确定组件的行为。因为状态是动态的,所以它使组件能够跟踪渲染之间的更改信息,并使其具有动态性和交互性

例如,而不是

const countDailyChecksAll = this.state.post.length === 0 ? 0 : 
this.state.post[0].countDailyChecksAll.join(',');
使用类似于:

 this.setState({countDailyChecksAll: this.state.data[i].countDailyChecksAll})

数据
应该是一个数字数组。您有一个字符串数组,将其转换为单个逗号分隔的
字符串
,然后将其包装成一个数组。那是不对的

// convert to numbers
const countDailyChecksAll = this.state.post[0].countDailyChecksAll.map(parseFloat);

<Sparklines data={countDailyChecksAll} ... >
//转换为数字
const countDailyChecksAll=this.state.post[0].countDailyChecksAll.map(parseFloat);

数据
应该是一个数字数组。您有一个字符串数组,将其转换为单个逗号分隔的
字符串
,然后将其包装成一个数组。那是不对的

// convert to numbers
const countDailyChecksAll = this.state.post[0].countDailyChecksAll.map(parseFloat);

<Sparklines data={countDailyChecksAll} ... >
//转换为数字
const countDailyChecksAll=this.state.post[0].countDailyChecksAll.map(parseFloat);

countDailyChecksAll
可能无效。它要么等于
0
(一个数字),要么是一个逗号分隔的值字符串。事实上,它可以是两种不同的类型,这似乎是一个错误。将数组数据作为单个字符串传递似乎也不正确。
countDailyChecksAll
可能无效。它要么等于
0
(一个数字),要么是一个逗号分隔的值字符串。事实上,它可以是两种不同的类型,这似乎是一个错误。将数组数据作为单个字符串传递似乎也不正确。