私のウェブサイトでChart.jsを使用したいと思います。タイトルを見ると、私はReact.jsを使っています。componentDidUpdateの参照は定義されていません
let context = document.getElementById('canvas').getContext('2d');
let chart = new Chart(context, ...);
ので、私はこのようなコンポーネントを設計します:Chart.jsを使用するには、私はこのようなキャンバスとコンテキスト必要
export function updateChart() {
let context = this.refs.chart.getContext('2d');
let chart = new Chart(context ,...);
...
}
export default class GraphChart extends React.Component {
constructor() {
super();
updateChart = updateChart.bind(this);
}
componentDidMount() {
updateChart();
}
render() {
return <canvas ref="chart" className="chart"></canvas>;
}
}
あなたが見ることができるように、私は二つのことをエクスポートし、更新チャート機能GraphChartクラスです。直接チャートを更新するためにエクスポートupdateChart関数を使用して
import { updateChart } from './GraphChart';
import GraphChart from './GraphChart';
class Graph extends React.Component {
...
someKindOfAction() {
// update chart from here!
updateChart();
}
render() {
return (
<div>
<SomeOtherComponents />
<GraphChart />
</div>
);
}
}
、親クラス:双方は、このような親コンポーネントで使用されます。それは働いていたが、初めてだった。 GraphChartコンポーネントをアンマウントしてマウントした後、それはただ空です。
なぜrefsが空ですか?私が間違っていた場合、Chart.jsを初期化するためのキャンバスコンテキストを取得するにはどうすればよいですか?
グラフクラスのupdateChart()はGraphChartクラスにバインドされていません。したがって、componentDidMount()でバインドされた関数を呼び出すため、初めて動作します。 –