You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从D3v5升级到D3v6时sourceEvent未定义错误的解决求助

D3v5升级到v6后onBrush功能修复方案

原报错是因为D3v6移除了全局的d3.event对象,所有事件回调的事件参数改为直接传入函数,而非通过全局变量获取。以下是正确的修改步骤:

1. 修改onBrush函数的参数与事件引用

将原代码中的d3.event替换为回调函数接收的event参数:

}, {
    key: "onBrush",
    value: function onBrush(event) {
        if (event.sourceEvent && event.sourceEvent.type === "zoom") return;
        // 后续代码中所有d3.event的引用都要替换为event,比如:
        // const selection = event.selection;
        // 后续代码...
}

2. 检查并替换其他d3.event引用

如果后续代码里还有使用d3.event的地方(比如获取选区、事件坐标等),全部替换为传入的event参数。例如:

  • 原d3.event.selection → 改为event.selection
  • 原d3.event.x → 改为event.x

原因说明

D3v6重构了事件系统,移除了全局的d3.event,改为将事件对象作为第一个参数传递给回调函数。这一改动是为了避免全局状态带来的问题,同时让事件处理逻辑更清晰。之前的sourceEvent属性仍然保留在事件对象中,只是需要通过传入的参数访问。

内容的提问来源于stack exchange,提问作者Trevor McDaniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:35:27