如何解决d3.event在v7版本无效影响zoom拖拽缩放问题
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
近期由于代码内关于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}`) }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。
相关文章
vue element el-form 多级嵌套验证的实现示例
本文主要介绍了vue element el-form 多级嵌套验证的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08vue.js与element-ui实现菜单树形结构的解决方法
本文通过实例给大家介绍了vue.js与element-ui实现菜单树形结构,非常不错,具有参考借鉴价值,需要的朋友可以参考下2018-04-04前端启动出现报错提示vue-cli-service?serve的原因及解决办法
这篇文章主要给大家介绍了关于前端启动出现报错提示vue-cli-service?serve的原因及解决办法,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下2023-11-11
最新评论