Uncaught Error: unknown type: dragend in d3.js v5.4.0

Uncaught Error: unknown type: dragend in d3.js v5.4.0

我正在使用 d3.js v5.4.0

这是我收到的错误:Uncaught Error: unknown type: dragend

这是因为我正在尝试执行以下操作:

            d3.drag()
            .subject(function(d){
                return {x: d.x, y: d.y};
            })
            .on("drag", function(args){
                thisGraph.state.justDragged = true;
                thisGraph.dragmove.call(thisGraph, args);
            })
            .on("dragend", function() {
                // todo check if edge-mode is selected
            });

并且 dragend 现在似乎已被弃用。

我试图在 here 的较新版本中找到描述替代方案的发行说明,但无法做到这一点。

请帮我解决这个问题。

目前您可以通过拖动监听的三个事件是(v4 和 5。v3 和之前的版本不同):

start - after a new pointer becomes active (on mousedown or touchstart). drag - after an active pointer moves (on mousemove or touchmove). end - after an active pointer becomes inactive (on mouseup, touchend or touchcancel). (docs)

因此,您只需要将 dragend 更改为 end

var svg = d3.select("body")
  .append("svg")
  .attr("width",500)
  .attr("height",300);
  
var circle = svg.append("circle")
  .attr("cx",100)
  .attr("cy",100)
  .attr("r",20)
  .attr("fill","steelblue")
  .call(d3.drag().on("start", function() {
      d3.select(this).attr("fill", "orange")
    })
    .on("drag", function() {
      d3.select(this).attr("cx",d3.event.x)
        .attr("cy", d3.event.y )
    })
    .on("end", function() {
      d3.select(this).attr("fill","steelblue");
    })
  )
<script src="https://d3js.org/d3.v5.js"></script>