d3.event 在 webpack 构建中为 null

Dan*_*Dan 2 javascript d3.js webpack

我有一个可用的 D3/React/Webpack 系统,我试图通过不导入所有 D3 来减少构建大小。所以我有一个 d3Import.js 文件:

import { select, event } from 'd3-selection';
import { drag } from 'd3-drag';

export default { select: select, drag: drag, event: event };
Run Code Online (Sandbox Code Playgroud)

这是引用

import d3 from '../../d3Import.js';
Run Code Online (Sandbox Code Playgroud)

除了在拖动事件上查询事件外,一切都构建并运行良好(导入比上面显示的要多得多)。

onDrag = () => {
    const targetY = d3.event.y;
Run Code Online (Sandbox Code Playgroud)

这失败了

类型错误:_d3Import2.default.event 为空

当我在这里阅读建议时,我尝试为事件使用不同的名称

import { select, event as currentEvent } from 'd3-selection';
Run Code Online (Sandbox Code Playgroud)

...但没有变化。这一切都曾经与

import * as d3 from 'd3;
Run Code Online (Sandbox Code Playgroud)

但这似乎意味着在 bundle.js 中增加了 100k 左右。任何帮助表示赞赏!

Dan*_*Dan 6

由于特里评论,我有一个解决方案在这里

onDrag = () => {
   d3.getEvent = () => require("d3-selection").event;
   const targetY = d3.getEvent().y;
}
Run Code Online (Sandbox Code Playgroud)