3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于您的數(shù)據(jù)是以某種方式構(gòu)建的,因此當(dāng)單擊某個(gè)條形時(shí),將返回一個(gè)大小為 3 的數(shù)組,即elem. 您可以根據(jù)需要從那里提取數(shù)據(jù)。
使用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填充有單擊的元素。您可能需要稍微調(diào)整此代碼,以根據(jù)您要對(duì)該數(shù)據(jù)執(zhí)行的操作來準(zhǔn)確實(shí)現(xiàn)您正在尋找的內(nèi)容。評(píng)論中的沙盒。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
onClick您可以在圖表選項(xiàng)中定義一個(gè)函數(shù)。
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);
}
請(qǐng)?jiān)谙旅娴?a >StackBlitz中查看您修改后的代碼。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
看來,onElementsClick 在 chart-js-2 ver.>3 中已被棄用 你貓?jiān)囋囘@個(gè):
<Bar
data={data}
options={options}
getElementAtEvent={(elements, event) => {
if (event.type === "click" && elements.length) {
console.log(elements[0]);
}
}}
/>
添加回答
舉報(bào)