如何检查chart.js中的图表何时在React中完全呈现?

rdrgkggo  于 2022-11-23  发布在  Chart.js
关注(0)|答案(1)|浏览(178)

我要显示图表图像,而不是react-chartjs-2chart.js中的图表
但是,图像一开始不会完全渲染

export function App() {
  const chartRef = useRef<ChartJS>(null);
  const [chartImg, setChartImg] = useState<string>();

  const ChartRef = () => <Chart ref={chartRef} type="line" data={data} />;
  useEffect(() => {
    const chart = chartRef.current;
    if (!chart) return;
    const img = chart.toBase64Image(); // just white background
    setChartImg(img);
  }, []);

  const showImage = useCallback(() => {
    const chart = chartRef.current;
    if (!chartRef.current) return;
    const img = chart.toBase64Image(); // Correct image is displayed
    setChartImg(img);
  }, []);
  return (
    <div>
      <ChartRef />
      <button type="button" onClick={showImage}>
        Display Image
      </button>
      <img src={chartImg} alt="here" />
    </div>
  );
}

在下面的代码(链接的codesandbox here)中,直到我单击Display Image按钮时才显示图像。
有没有什么方法可以在useEffect上运行初始检查,并确保正确显示图像而不是图表,而不必单击Display Image

yqlxgs2m

yqlxgs2m1#

这是因为您尝试在动画和绘制完成之前读取画布,您需要将动画设置为false或使用onAnimationComplete回调:
第一个

相关问题