在useEffect中销毁Chart js-React

老虎条纹

创建新图表时,我无法销毁先前的图表。

问题是,如果 if(myChart) myChart.destroy()从不触发。也许是因为myChart变量仅存在于中useEffect

尽管myChart可以将变量分配给状态,但是您将无法destroy()直接调用状态。

那么,您将如何处理呢?

下面的示例根据以下值呈现饼图或条形图graphType

import React, { useEffect } from "react";
import Chart from "chart.js";

export default function GraphMaker({ graphType }) {
    useEffect(() => {
        const ctx = document.getElementById("myChart");

        if (myChart) myChart.destroy()

        if (graphType === "pie") {
            console.log(myChart)

            var myChart = new Chart(ctx, {
                type: "pie",
                data: {
                    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
                    datasets: [
                        {
                            label: "# of Votes",
                            data: [12, 19, 3, 5, 2, 3],
                            backgroundColor: [
                                "Red",
                                "Blue",
                                "Yellow",
                                "Green",
                                "Purple",
                                "Orange"
                            ],
                            borderColor: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
                            borderWidth: 1
                        }
                    ]
                }
            });
        } 
        else if (graphType === "bar") {
            var myChart = new Chart(ctx, {
                type: "bar",
                data: {
                    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
                    datasets: [
                        {
                            label: "# of Votes",
                            data: [12, 19, 3, 5, 2, 3],
                            backgroundColor: [
                                "Red",
                                "Blue",
                                "Yellow",
                                "Green",
                                "Purple",
                                "Orange"
                            ],
                            borderColor: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
                            borderWidth: 1
                        }
                    ]
                }
            });
        }
    }, [graphType])

    return (
        <>
            <canvas id="myChart" />
        </>
    );
}
李·莱纳利

在新文档中,他们也使用此方法,他们通过销毁图表来解决此问题,以返回使用效果,如下所示:

useEffect(() => {
    const cfg = {
      type: 'doughnut',
      data: {
        labels: [
          'Red',
          'Blue',
          'Yellow'
        ],
        datasets: [{
          label: 'My First Dataset',
          data: [300, 50, 100],
          backgroundColor: [
            'rgb(255, 99, 132)',
            'rgb(54, 162, 235)',
            'rgb(255, 205, 86)'
          ],
          hoverOffset: 4
        }]
      }
    };
    const chart = new Chart(canvas.current.getContext('2d'), cfg);
    return () => chart.destroy();
  });

通过实时示例链接到他们的文档:https : //www.chartjs.org/docs/master/charts/doughnut/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在React JS中重试useEffect

来自分类Dev

React中的Chart JS不获取数据

来自分类常见问题

React.js中useEffect的怪异行为

来自分类Dev

React.js中useEffect的怪异行为

来自分类Dev

useEffect挂钩中的问题以在React.js中获取api

来自分类Dev

React 中的 JS 渲染

来自分类Dev

在Chart.JS + React中设置动态状态数据

来自分类Dev

如何从React js中的State获取Chart JS Pie Chart的数据?

来自分类Dev

React.js上UseEffect内的变量

来自分类Dev

在React.js中过滤

来自分类Dev

在React Js中设置状态

来自分类Dev

在React Js中丢失状态

来自分类Dev

React JS中的拦截错误

来自分类Dev

React JS中的进度栏

来自分类Dev

React js 中的条件渲染

来自分类Dev

在react js中扩展数组

来自分类Dev

React JS如何在Hook中的页面之间传递数据(useEffect)

来自分类Dev

如果我尝试删除警告,则useEffect中的React.js无限循环

来自分类Dev

无法在React Js中使用Chart js中获得条形图颜色

来自分类Dev

如何在React.js中调整Chart.JS元素的大小?

来自分类Dev

为什么我的API中的数据没有显示在React中的chart.js图表上?

来自分类Dev

如何在React和Next.js中的useEffect中跟踪依赖项列表中未定义变量的值

来自分类Dev

带有嵌套异步函数的React.js useEffect

来自分类Dev

如何在React Chart JS中为点创建OnClick事件?

来自分类Dev

从 react app.js 获取数据到 react chart.js

来自分类Dev

销毁Angular Js中的工厂对象

来自分类Dev

尝试使用UseEffect在react.js中创建一个倒计时(天:小时:分钟:秒)

来自分类Dev

如何在React JS或React-Redux JS中对CloudKit JS进行身份验证

来自分类Dev

使用React钩子在React js中预览上传的图像

Related 相关文章

热门标签

归档