我最近迁移了现有的ReactJS组件,该组件将Highcharts图表呈现为CommonJS格式。因此,现在通过ES6导入包含Highcharts库,应该通过<script>
标记。
除了绑定到折线图点的click事件处理程序之外,大多数功能都没有问题。以下是图表选项哈希的相关片段:
this.chart = Highcharts.chart({
chart: {
renderTo: this.chartId,
type: 'line'
},
plotOptions: {
line: {
allowPointSelect: true,
point: {
events: {
click: function(e) {
// some action
}
}
}
}
},
tooltip: {
enabled: true,
pointFormat: '<span style="color:{point.color}">\u25CF</span>{point.meta}'
},
...
});
在迁移到CommonJS格式之前,已确认这是有效的。迁移前和迁移后代码的唯一区别在于实例化:
$('#' + this.chartId).highcharts({...});
点击某个点时,会出现以下错误:
Uncaught TypeError: Cannot set property target of #<Event> which has only a getter
有趣的是,单击工具提示也会触发相同的错误(即使事件处理程序没有在图表配置中明确绑定到它)。也许是Highcharts内部事件处理程序?
我使用的是Highcharts v2.4.2(通过npm)。
以下是文件导入:
import $ from 'jquery';
import Highcharts from 'highcharts';
如前所述,大多数现有功能都运行良好(图表渲染,动画工作等) - 只是设置事件处理程序的问题。