Chart.js折线图各数据点Tooltip匹配月份显示异常解决
问题根因
当前Tooltip无法和数据点一一匹配月份,是因为自定义标题回调的逻辑存在错误:
- 回调函数没有获取当前悬停数据点的位置索引,无法关联
MONTHS数组中对应位置的月份 - 函数内对
MONTHS的遍历逻辑会反复覆盖返回值,最终永远返回数组最后一个月份,和当前悬停点完全无关
修改方法
直接替换原有titleTooltip函数即可,Chart.js的tooltip回调参数中自带当前悬停点的索引,直接用索引取对应月份:
// Tooltip const titleTooltip = (tooltipItems) => { // 获取当前悬停数据点的索引 const hoverIndex = tooltipItems[0].dataIndex; // 返回索引匹配的月份 return MONTHS[hoverIndex]; }
使用前提:MONTHS数组的长度需要和数据集的数据点总数、x轴标签长度完全一致,否则会出现索引错位。
修改完成后,鼠标悬停到任意数据点时,Tooltip就会只显示该点对应的月份,不会再出现所有月份同时展示/只显示最后一个月的问题。

内容的提问来源于stack exchange,提问作者DS89
相关产品推荐
相关产品推荐

