【发布时间】:2016-12-13 13:39:06
【问题描述】:
我有一个复杂的应用程序,它给了我以下警告:
警告:setState(...):在现有状态转换期间无法更新(例如在
render或其他组件的构造函数中)。渲染方法应该是 props 和 state 的纯函数;构造函数副作用是一种反模式,但可以移至componentWillMount。
简而言之,当我按下“添加”按钮时会出现此警告,这应该会向我的应用程序添加另一个组件。下面是一段对应的代码:
<Button onClick={addChartHandler.bind(this)}><Glyphicon glyph="plus" /></Button>
addChartHandler 来自它的容器组件:
addChartHandler() {
store.dispatch(addChart());
}
addChart 只是增加组件计数器。并且应用容器订阅了这些更改:
const mapStateToProps = (store) => {
return {
count: store.app.chartsCount
};
}
我很难追踪警告,但每次渲染每个组件时我都会调用console.log。似乎在渲染这个组件(对于我的App 来说是哑组件)后会弹出这个警告:
render() {
let charts = [];
for (let i = 0; i < this.props.count; i++) {
charts.push(<ChartContainer id={i} key={i} size={this.props.size} />);
}
console.log('APP RENDER');
console.log(charts);
return (
<div className="container-padding">
<NavContainer />
{charts}
</div>
);
}
欢迎提出任何建议。已经为此工作了至少三个小时,没有任何想法。
【问题讨论】:
-
ChartContainer 在做什么?
-
@Christian 获取绘制图表所需的数据(使用chart.js)
标签: javascript reactjs redux react-redux