私は以下のコードを持っています。 2つのconsole.log
に気付いてください。 <ChartTitle>
コンポーネントの別の子の中から_getChartData()
関数を呼び出しています。React ES6コンポーネントは再販されていません
_getChartData()
をもう一度呼び出すと、下のコードの子コンポーネントが再レンダリングされないという問題があります。私はそこにsetState
のためにそうすることを期待しています。
export default class PerformanceChart extends React.Component {
constructor(props) {
super(props);
this.state = { chart_data: [] };
this._getChartData();
}
componentDidMount() {
this._getChartData();
}
_getChartData(d = 30) {
console.log('running setState for chart data');
// AJAX GOES HERE
this.setState = ({
chart_data : [
['x', '2016-01-01', '2016-03-01', '2016-04-01', '2016-05-01', '2016-06-01', '2016-07-01', '2016-08-01'],
['Clicks', Math.random(), 200, 100, 400, 150, 250, 125, 600],
['Orders Reported', 300, 250, 100, 400, 150, 250, 40, 300],
['totals', [1050, 5042]]
]
});
};
render() {
console.log('re-rendering!');
return (
<div>
<ChartTitle chart_data={this.state.chart_data} getChartData={this._getChartData.bind(this)} />
<Chart chart_data={this.state.chart_data} />
</div>
);
}
};
これは私が私のコンソールで得るものです:
componentDidMount以外の_getChartDataはいつ実行していますか? –
@IlanHasanovレンダリング内の子コンポーネント内から: 'getChartData = {this._getChartData.bind(this)} ' –
すべてのコードを共有できますか? // AJAXはこちらを表示します.setState()はすべてのコンポーネントのコードをすべて追加します –