当前位置: 代码网 > it编程>编程语言>Javascript > 如何解决d3.event在v7版本无效影响zoom拖拽缩放问题

如何解决d3.event在v7版本无效影响zoom拖拽缩放问题

2024年05月18日 Javascript 我要评论
近期由于代码内关于d3版本的更新,由原来的v3 v4更新值v7.0.0导致原有关于d3的波点图内zoom方法的拖拽缩放、tooltip提示框问题开始报错,即d3.event数据废弃了1.设置d3图形的

近期由于代码内关于d3版本的更新,由原来的v3 v4更新值v7.0.0

导致原有关于d3的波点图内zoom方法的拖拽缩放、tooltip提示框问题开始报错,即d3.event数据废弃了

1.设置d3图形的缩放配置

在d3.event.transform.x中,即提示

uncaught (in promise) typeerror: cannot read properties of undefined (reading 'x')

此时可在zoom方法内,使用匿名函数获取当前参数current

参数内即含有所需的x,y,k值

  let zoom = d3.zoom().scaleextent([0, 8]).on('zoom', function (current){
    zoomed(current.transform)
  })
  ....
  let svg = d3
  ...
    .call(zoom)
    function zoomed(transform) {
      svg.style('transition', 'none')
      svg.attr('transform', `translate(${transform.x},${transform.y}) scale(${transform.k})`
     )}

2.d3图形的鼠标tooltip配置事件

let node = svg
...
   .on('mouseover', function (current) {
     cleartimeout(that.timer)
     that.timer = settimeout(() => {
       that.drawtooltip(current.target.__data__, current)
     }, 100)
   })
   .on('mouseout', function (current) {
     cleartimeout(that.timer)
     that.tooltip.style('visibility', 'hidden')
   })

此时关于图例内的数据

需要通过current.target.__data__来获取

  • 而layerx则直接在匿名函数内的current参数获取
  • 而非d3.event获取
drawtooltip(data, event) {
  this.tooltip
    .style('visibility', 'visible')
    .style('left', `${event.layerx}px`)
    .style('top', `${event.layery}px`)
    .text(`名称:${data.title}`)
    .append('p')
    .text(`类别:${data.type}`)
    .append('p')
    .text(`数量:${data.value}`)
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com