使用react将onClick事件添加到组元素(svg)

Cla*_*fou 17 javascript svg dom-events reactjs

我正在尝试将onClick事件添加到现有的svg.现在我有这个:

<g id="Group" onClick={this.clickGroup.bind(this, 1)}>
Run Code Online (Sandbox Code Playgroud)

有点有效但不完全......当我点击组时会触发事件,但可点击的"区域"与我想要点击的组不同(对我来说似乎完全随机).

有没有更好的方法将事件添加到<g>元素(使用React?)?

Ant*_*ois 20

g元件是一个空的容器; 它不能自己发射事件.

如果运行此示例,您将看到可以click通过单击g元素的子元素来触发事件,但如果单击它们之间的空白区域则不能.

您必须使用实际形状来在SVG中触发事件.

  • 您可以在形状上添加透明矩形并在其上附加事件.如果有人有一个更优雅的解决方案,很高兴看到它. (5认同)

Nir*_*Kar 17

使用样式指针事件作为边界框,使组可以在组中的任何位置单击.即使在空的位置

<g id="Group" onClick={this.clickGroup.bind(this, 1)} style="pointer-events: bounding-box;">
Run Code Online (Sandbox Code Playgroud)

  • 我害怕这个答案是评论。我刚刚花了两个小时试图弄清楚当“onClick”处理程序位于其祖先之一时,“g”元素如何成为实际目标。这个答案是突破。 (6认同)