【发布时间】:2019-12-19 15:08:04
【问题描述】:
tl;包括博士
我有一个yAxis.labels.formatter
/**
* Formats yAxis labels in order to include the min/max dates of the row
*
* /!\ Scared of performance issues
* /!\ because the formatter is called 4 times on init,
twice on resize,
and once on update
* /!\ On top of that, the formatter is called once per category (label)
* /!\ and my (poopy) function loops over all the data, each time
* /!\ as a result, we have
* => 4 x nbOfCategories x nbOfData
* calls of this function :( --> see console logs
*/
如前所述,在初始渲染时,每个类别都会调用格式化程序函数 4 次(并且我当前的实现已经每次循环遍历所有数据,我知道这是一个非常糟糕的主意,但这会改变:见“真正的问题”)。在前两个调用中,this.chart.series[0].data 仍然是空的,但如果我尝试跳过它(通过评论linked demo 的line 79),那么图表会在没有正确标签格式的情况下实例化(即使我的函数仍然是叫了两次)。 (这已经很奇怪了,不是吗?)
我怀疑 HighCharts 有某种生命周期、顺序,用于绘制/更新导致此问题的图表,但不知道是哪个。
真正的问题
我的真正的问题将是“我应该如何处理这个(格式化轴标签)/是否有更便宜的方法来手动'强制'标签更新?”
我并不完全在寻找优化的功能(但仍然欢迎),因为我已经计划在 HighCharts 之外计算这些标签并将它们作为userOptions 传递,以便将成本从4 x nbOfCategories x nbOfData 降低到只是 4 x nbOfCategories,但理想情况下,我想要一种方法将其减少到 nbOfCategories(就像更新系列数据时只有一个调用一样)。
tl;博士:
有没有办法在初始渲染时使用 HighCharts 的“生命周期”减少标签格式化程序调用的数量(目前为 4 个)?
【问题讨论】:
标签: javascript highcharts