【问题标题】:Title inside SVG rect not showingSVG 矩形内的标题未显示
【发布时间】:2016-05-27 07:56:58
【问题描述】:

我有一个React 组件,我在其中映射了一些元素,并且对于每个元素,我返回一个由rect 表示的标记,该标记具有title 并被绘制在svg 中。标记在svg 中正确显示,但是当我将鼠标悬停在它上面时,工具提示没有显示。

这是我的 svg 的样子

我的svg 或多或少具有以下结构:

<svg>
    <g>
        {this.renderLines()}
        {this.renderMarkers()}
    </g>
</svg>

每个标记都是这样创建的,其中keyxycolorname是一些参数:

<rect key={key}
      width='8px'
      height='8px'
      x={x}
      y={y}
      fill={color} >
      <title>{name}</title>
</rect>

如果我需要提供更多信息或代码,请告诉我。

编辑

所以,我找到了问题所在,但不知道如何在不破坏代码的情况下解决它。

组件毕竟有如下结构:

<svg>
    <g>
        {this.renderLines()}
        {this.renderMarkers()}
    </g>
    <rect />
</svg>

rect 通过d3 库获取附加到它的缩放处理程序,以便图表具有缩放功能。问题是这个矩形在前台,因此标记的onHover 事件没有被触发。

rect 缩放窗格移动到svg 顶部可以解决工具提示显示问题,但是当鼠标悬停在标记上时,缩放不起作用。它必须mouseOut 才能工作。

【问题讨论】:

  • 它正在为我映射的每个元素呈现一个rect
  • 每个标记都只是一个rect,其中包含一个title,正如我在问题中提到的那样
  • 只是rects 在g 元素中

标签: javascript svg reactjs


【解决方案1】:

好吧,我终于解决了。这是我所做的:

  1. 使rect成为svg的第一个孩子
  2. 通过ref 作为回调将缩放功能附加到rect 标记

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2012-09-26
    • 2021-02-18
    相关资源
    最近更新 更多