d3.js错误Cannot read property ‘button’ of null

在d3的官方文档上有这么一段话

如果你使用 Babel, Webpack 或者其他的 ES6 转 ES5 的打包工具,要注意 d3.event 的值在事件中的变化!导入的 d3.event 必须是 live binding(动态绑定) 的,因此你需要将打包配置设置为引入 D3 的 ES6 模块而不是生成的 UMD;并不是所有的打包工具都识别 jsnext:main。也要注意与 window.event 的冲突。

文档地址:https://d3js.org.cn/api/d3-selection/#handling-events

所以,在使用babel+webpack时,用import * as d3 from 'd3'这种方式是不行的,获取到的d3.eventnull,所以就出现了上述错误。

借助于webpack,可以将d3添加到全局,即可解决这个问题。

plugins: [
  new webpack.ProvidePlugin({
    'd3': 'd3'
  })
]
如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注