组件的子项不应发生突变



我有一个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

相关内容

  • 没有找到相关文章

最新更新