我有一个react-redux
应用程序。我通过Redux商店的AJAX部分获得数据。这部分看起来像这样:
counts: {
warning: 0,
new: 0,
in_hands: 0,
completed: 0,
rejected: 0
}
改变这些值后,React渲染组件
render() {
var counts = [
{
id: 'warning',
count: parseInt(this.props.counts.warning),
name: 'Внимение'
},
{
id: 'new',
count: parseInt(this.props.counts.new),
name: 'Новые'
},
{
id: 'in_hands',
count: parseInt(this.props.counts.in_hands),
name: 'В работе'
},
{
id: 'completed',
count: parseInt(this.props.counts.completed),
name: 'Выполн.'
},
{
id: 'rejected',
count: parseInt(this.props.counts.rejected),
name: 'Отменен.'
}
];
content = (<div className="inside-loader"/>);
return(
<div>
<Tabs key="tabs_order-list" id="order-list" items={counts} defaultTab="warning" changeList={this.changeList} content={content}/></div>
)
}
在Tabs
组件中,我们可以看到:
render() {
let self = this;
let items = this.props.items.map(function (item, index) {
return <div key={self.props.id+'_'+index} onClick={self.changeTab.bind(null, item.id)} className={'bar-tabs__tab ' + (self.state.openedTabId == item.id ? 'active' : '')}>
<b>{item.count}</b>
<span>{item.name}</span>
</div>
})
return <div>
<div className={'bar-tabs bar-tabs__' + this.props.id}>{items}</div>
<div className={'bar-tabs-content bar-tabs-content__' + this.props.id}>
<div className='bar-tabs-content__tab active'>{this.props.content}</div>
</div>
</div>
}
然而,在控制台中我看到这样:
控制台屏幕
我读到类似的问题,我明白,当我试图改变props
值时,会发生此警告。但我没有改变props
值
您确定所有的count
s都是有效的数字吗?您应该对第一个render()
中的counts
数组进行console.log
,并检查该数组的每个对象中的count
值都不是NaN
。如果其中任何一个是NaN
,它可能与这个问题有关:https://github.com/facebook/react/issues/7424.
简单地检查你的数据是正确的,你没有得到parseInt
之后的NaN
。