У меня, вероятно, есть какой-то ущерб от повреждения мозга, потому что что-то вроде должно быть тривиально.Получите идентификатор перетаскиваемого элемента в d3.js
У меня есть куча кругов SVG, созданных вручную (через React). Затем я прикрепляю поведение d3 к всем им. Применяется поведение перетаскивания, и функция перетаскивания выполняется, но когда я перетаскиваю один из этих кругов, я не могу ответить соответствующим образом, потому что я не знаю, какой из них был перемещен. Где я могу получить идентификатор перетаскиваемого элемента?
Я проверил несколько других вопросов и нашел только какое-то безумное решение для фильтров ... это не может быть так.
Я также заглянул в docs и нашел свойство subject
.. однако, что он имеет значение null, везде я пробовал.
Мой код:
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);
}
Пожалуйста, не редактируйте ответ в своем вопросе! См.: [* «У пользователя есть право редактировать принятый ответ на свой вопрос?» * (Http://meta.stackoverflow.com/questions/262806), [* «Лучше ответить или отредактировать свой вопрос для публикации решения? »* (http://meta.stackoverflow.com/questions/307553), [*« Редактирование ответа на самостоятельный ответ »*) (http://meta.stackoverflow.com/questions/278050) и т. д. Положите его на самостоятельный ответ, если вы считаете, что существующий ответ недостаточно конкретный. – altocumulus
@altocumulus: хорошо, спасибо. – Damb