问题描述
我正在将Chartjs与React一起使用。我有一个加密货币价格图表,其中包含三个数据集,其中一个是价格列表,一个是与初始价格相切的水平线,另一个是与最高点相切的水平线。他们在这里:
datasets: [
{
label: 'pricesData',fill: false,lineTension: 0,backgroundColor: 'rgba(75,192,1)',borderColor: chartColor,borderWidth: 2,data: prices
},{
label: '0 line',radius: 0,borderDash: [10,5],data: zeroLine,backgroundColor: 'rgba(255,255,borderColor: 'rgba(255,.5)',},{
label: 'top Line',data: topLine,0)'
}
我正在尝试创建一个功能,根据您在图形上的位置来更改其他组件中的显示价格。这是label选项中的回调函数:
callbacks: {
label: function(tooltipItem,data) {
var item = data.datasets[0].data[tooltipItem.index];
var zeroLine = data.datasets[1].data[tooltipItem.index]
let properties = {
price: item,percentChange: (((item-zeroLine)/zeroLine)*100).toFixed(2)
}
props.parentCallback(properties);
return(item)
}
}
现在,它可以像预期的那样工作,只不过它运行了三次,并且返回的项目用三个实例填充了工具提示。我想这是因为我有三个数据集。我将如何防止这种情况,只调用一次props回调并仅用一个值填充工具提示?我想这也有轻微的帧率故障。
解决方法
我已经回答了我自己的问题。对于有类似问题的任何人,您都可以使用此选项配置工具提示,使其仅使用一个数据集:
tooltips: {
filter: function (tooltipItem) {
return tooltipItem.datasetIndex === 0;
}
}