代码之家  ›  专栏  ›  技术社区  ›  Dan

在Webpack生成中,d3.event为空

  •  2
  • Dan  · 技术社区  · 7 年前

    我有一个有效的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 };
    

    这与

    import d3 from '../../d3Import.js';
    

    除了查询事件(如拖动事件)之外,所有东西都可以正常构建和工作(导入比上面显示的多)。

    onDrag = () => {
        const targetY = d3.event.y;
    

    这个失败了

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

    我在阅读建议时尝试使用不同的事件名称 here

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

    …但没有变化。以前都是这样的

    import * as d3 from 'd3;
    

    但在bundle.js中,这似乎意味着额外的10万左右。感谢您的帮助!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Dan    7 年前

    感谢特里的评论,我有一个解决方案 here :

    onDrag = () => {
       d3.getEvent = () => require("d3-selection").event;
       const targetY = d3.getEvent().y;
    }