3 回答
TA贡献2021条经验 获得超8个赞
由于您的数据是以某种方式构建的,因此当单击某个条形时,将返回一个大小为 3 的数组,即elem. 您可以根据需要从那里提取数据。
使用onElementsClick:
<Bar
data={barData}
height={275}
onElementsClick={elem => {
var data = barData.datasets[elem[0]._datasetIndex].data;
console.log("Cases", data[elem[0]._index]);
data = barData.datasets[elem[1]._datasetIndex].data;
console.log("Recovered", data[elem[1]._index]);
data = barData.datasets[elem[2]._datasetIndex].data;
console.log("Deaths", data[elem[2]._index]);
}}
options={{
maintainAspectRatio: false,
scales: {
yAxes: [
{
ticks: {
beginAtZero: true,
},
},
],
},
}}
/>;
elem填充有单击的元素。您可能需要稍微调整此代码,以根据您要对该数据执行的操作来准确实现您正在寻找的内容。评论中的沙盒。
TA贡献1856条经验 获得超11个赞
onClick您可以在图表选项中定义一个函数。
onClick: (event, elements) => {
const chart = elements[0]._chart;
const element = chart.getElementAtEvent(event)[0];
const dataset = chart.data.datasets[element._datasetIndex];
const xLabel = chart.data.labels[element._index];
const value = dataset.data[element._index];
console.log(dataset.label + " at " + xLabel + ": " + value);
}
请在下面的StackBlitz中查看您修改后的代码。
TA贡献1936条经验 获得超6个赞
看来,onElementsClick 在 chart-js-2 ver.>3 中已被弃用 你猫试试这个:
<Bar
data={data}
options={options}
getElementAtEvent={(elements, event) => {
if (event.type === "click" && elements.length) {
console.log(elements[0]);
}
}}
/>
添加回答
举报