获取d3.js中被拖动元素的id

获取d3.js中被拖动元素的id,d3.js,reactjs,D3.js,Reactjs,我可能有某种脑损伤,因为像这样的事情应该是微不足道的 我通过React手动渲染了一堆svg圆。然后,我将d3拖动行为附加到它们。应用了拖动行为并执行了拖动功能,但是当我拖动其中一个圆时,我无法做出相应的响应,因为我不知道它们中的哪一个被移动了。在哪里可以获取被拖动元素的ID 我检查了一些其他问题,发现了一些疯狂的过滤器解决方案。。。这不可能 我还偷看并找到了标的财产。。然而,无论我在哪里尝试它,它都是无效的 我的代码: componentWillUpdate() { let node

我可能有某种脑损伤,因为像这样的事情应该是微不足道的

我通过React手动渲染了一堆svg圆。然后,我将d3拖动行为附加到它们。应用了拖动行为并执行了拖动功能,但是当我拖动其中一个圆时,我无法做出相应的响应,因为我不知道它们中的哪一个被移动了。在哪里可以获取被拖动元素的ID

我检查了一些其他问题,发现了一些疯狂的过滤器解决方案。。。这不可能

我还偷看并找到了标的财产。。然而,无论我在哪里尝试它,它都是无效的

我的代码:

  componentWillUpdate() {
    let nodes = d3.selectAll("circle");

    const dragFn = (d,i) => {
      d3.event.sourceEvent.stopPropagation();
      this.props.onNodeDrag(I_NEED_AN_ID_HERE);
    }

    const dragBehavior = d3.behavior.drag();
    dragBehavior.on('drag', dragFn);
    dragBehavior.on('dragstart', () => {
      d3.event.sourceEvent.stopPropagation();
    });

    nodes.call(dragBehavior);
  }

我不知道函数中包含什么,但在纯js中,您可以通过以下方式获得html元素的任何属性:

d3.select(this).attr("id"); //or class etc.
或者如果包好了

 d3.select(this).select("circle").attr("id");

下面是一个示例:

我不知道函数中包含什么,但在纯js中,您可以通过以下方式获得html元素的任何属性:

d3.select(this).attr("id"); //or class etc.
或者如果包好了

 d3.select(this).select("circle").attr("id");

这里有一个例子:

谢谢,就是这样:我对代码做了一些修改,以保留this上下文,并使用了d3.selectthis。将更新问题并接受此答案。谢谢,这样做了:我已稍微更改了代码以保留此上下文,并使用了d3.selectthis。将更新问题并稍后接受此答案。请不要在问题中编辑答案!请参阅:,等等。如果您认为现有答案不够具体,请将其放在自我回答中。@altocumulus:好的,谢谢。请不要在您的问题中编辑答案!请参阅:,等等。如果您认为现有答案不够具体,请将其放在自我回答中。@altocumulus:好的,谢谢。