多个工具提示未在反应中正确显示

Multiple tooltips not showing correctly in react

我正在使用 React D3 图表,我已经创建了图表并且工作正常。

我做了什么

使用下面的代码显示工具提示

.on("mousemove", function (event, d) {
    // this whole code is when I hover that perticular bar
    d3.select(this)
      .transition()
      .duration("50")
      .attr("opacity", 0.6)
      .attr("x", (a) => xScaleBars(a.timeline) - 3)
      .attr("width", xScaleBars.bandwidth() + 6)
      .style("filter", "url(#glow)");

    div.transition().duration(50).style("opacity", 1);
    div
      .html(
        `</text><text"></br> value :  ${d.dataToShow}
        <br/>
        </text><text"></br> Month :  ${d.month}
        `
      )

      .style("left", event.pageX - 58 + "px")
      .style("top", event.pageY - 140 + "px");
  })
  .on("mouseout", function (d, i) {
    // this is when I move cursor out of that bar
    d3.select(this)
      .transition()
      .duration("50")
      .attr("width", xScaleBars.bandwidth())
      .attr("x", (a) => xScaleBars(a.timeline))
      .style("filter", "none")
      .attr("opacity", "1");
    div.transition().duration("50").style("opacity", 0);
  })

我面临的问题

d3.select("svg").selectAll(".tooltipCHart").remove();

但这并没有解决我的问题,我想我遗漏了一些小部分

here is my code sandbox which I tried

问题是您每次 re-render 图表时都会创建一个新的工具提示 div

更好的方法是在开始时隐藏工具提示 div(在函数组件的渲染/return 中),然后修改其内容和样式(不透明度:1)在 mouseovermouseout 上。使用 ref.

跟踪工具提示 div

查看工作codesandbox(我只修改了图表 1,您可以对图表 2 进行类似的修改)