首页 > 解决方案 > 鼠标悬停不能用作箭头功能?

问题描述

我有以下功能:

.on("mouseover", function(d, i) {
    d3.select(this)
      .attr("fill", "red");
})

但是,我想尝试将它写成箭头函数,所以我找到了这个教程并得到了这个:

.on("mouseover", (d, i, nodes) => {
    d3.select(nodes[i])
      .attr("fill", "red");
})

但是,每当我尝试运行它时,我都会不断收到一条错误消息TypeError: undefined is not an object (evaluating 'nodes[i]')

我也尝试过替换nodes并只是调用this,但似乎无论我尝试什么,箭头函数在这里都不起作用。我觉得这不应该是版本问题,因为我使用的是 d3 的 v7。谁能解释这里的问题是什么?

提前致谢!

标签: javascriptd3.jsarrow-functions

解决方案


我想到了。根据这个讨论,显然从 v6 开始,上面链接中提供的箭头函数解决方案不再可能

所以现在当前的解决方案是:

.on("mouseover", (d) => {
    d3.select(d.currentTarget)
      .attr("fill", "red");
})

推荐阅读