如果我使用Event:[],那么悬停问题将被修复,但我也想要工具提示.

import Chart from "chart.js";


const Component1 = ({productData,truncatedNames}) => {
  useEffect(() => {
        const canvas = document.getElementById("myChart1");
    // Create the chart context
    const ctx = canvas.getContext("2d");
  
  
    // Define the chart data
    const data = {
      labels: truncatedNames,
      datasets: [
        {
          label: "Products",
          data: productData,
          backgroundColor: "#FA7070",
        },
      ],
    };

    // Configure the chart options
    const options = {
      responsive: true,
      scales: {
        yAxes: [
          {
            display: true,
            ticks: {
              suggestedMin: 0,
              beginAtZero: true,
              callback: productData ? yAxisLabelCallback : emptyFunction,
            },
          },
        ],
      },
      onHover: function (event, chartElements) {},
      hover: false,
    };

    // Create the bar chart
    const myChart = new Chart(ctx, {
      type: "bar",
      data: data,
      options: options,
    });
  }, []);
  return (
   
      <Box>
        <canvas width={"70%"} height={"40%"} id="myChart1"></canvas>
      </Box>
  
  );
};

export default Component1;

请说明或举例说明我在显示另一个客户数据后如何销毁我的图表. 我无法在useEffect中销毁它,因为如果我控制MyChart,那么它会给出未定义的值.

推荐答案

正如 comments 中提到的, 您的组件不会使用新数据刷新,因为您没有将依赖项(ductData和truncatedNames)传递给Use Effect. 更改props 后,从属关系将重新运行该效果.

useEffect(() => {
    ... Other code

    // Create the bar chart
    const myChart = new Chart(ctx, {
      type: "bar",
      data: data,
      options: options
    });

    return () => {
      // doing cleanup 
      myChart.destroy(); 
    };
  }, [productData, truncatedNames]);

此外,您还需要添加清理函数,该函数将销毁旧图表并在useEffect中呈现新图表.

Javascript相关问答推荐

在HTML中使用脚本变量作为背景图像源

在JS中获取名字和姓氏的首字母

React Hooks中useState的同步问题

无法将nPM simplex-noise包导入在JS项目中工作

从mat—country—select获取整个Country数组

使搜索栏更改语言

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

当作为表达式调用时,如何解析方法decorator 的签名?

可更改语言的搜索栏

如何从HTML对话框中检索单选项组的值?

IF语句的计算结果与实际情况相反

对路由DOM嵌套路由作出react

如何将数据块添加到d3力有向图中?

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

如何用javascript更改元素的宽度和高度?

基于产品ID更新条带产品图像的JavaScript命中错误

重新渲染过多(&Q).REACT限制渲染次数以防止无限循环.使用REACT下拉菜单时

使用静态函数保存 node 前的钩子

相对于具有选定类的不同SVG组放置自定义工具提示

当一条路由在Reaction路由中命中时,如何有条件地渲染两个组件或更改两个插座?