import { Chart, ChartConfiguration } from 'chart.js'; import React, { FunctionComponent, useEffect, useRef } from 'react'; interface ReactChartJSProps { chartConfig?: ChartConfiguration; } interface RefForChartInstance { chartInstance?: Chart; } const ReactChartJs: FunctionComponent = (props: any) => { const { chartConfig } = props; const canvasDomRef = useRef(); const chartInstanceRef = useRef({}); useEffect(() => { const canvasDom = canvasDomRef.current; const chartInstance = chartInstanceRef.current!.chartInstance; if (chartInstance) { chartInstance.destroy(); } chartInstanceRef.current!.chartInstance = new Chart(canvasDom!, chartConfig!); }, [chartConfig]); return (
{ canvasDomRef.current = instance!; }} width="400" height="200" />
); }; export default ReactChartJs;