我有一個複雜的應用程序時無法更新,這讓我以下警告:警告:現有的狀態轉換
警告:的setState(...):現有的狀態轉變(如在無法更新在
render
或另一個組件的構造函數中)。渲染方法應該是道具和狀態的純粹功能;構造函數的副作用是反模式,但可以移動到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
@Christian獲取繪製圖表所需的數據(使用chart.js) – Oscar