Babel中的d3事件回调上下文更改

d3 event callback context changes in Babel

本文关键字:上下文 回调 事件 中的 d3 Babel      更新时间:2023-11-29

我有一个类,其中一个函数将鼠标事件绑定到SVG元素:

class Chart {
  bindEvent() {
    this.svg.append('rect')
      .on('mousemove', () => {
        const mouseDate = scales.x.invert(d3.mouse(this)[0]);
      });
  }
}

然后babel transpiles进入:

var Chart = function () {
  function Chart() {
    _classCallCheck(this, Chart);
  }
  _createClass(Chart, [{
    key: 'bindEvent',
    value: function bindEvent() {
      var _this = this;
      this.svg.append('rect').on('mousemove', function () {
        var mouseDate = scales.x.invert(d3.mouse(_this)[0]);
      });
    }
  }]);
  return Chart;
}();

因此,在事件回调"this"中更改了"_this",我失去了上下文。有办法解决这个问题吗?

胖箭头按照定义是这样工作的。使用正则函数可能是最干净的。