javascript - 在 React 中访问 chart.js 组件实例
问题描述
我<Bar data={data} options={options}><Bar/>
用于渲染。在选项对象中,我设置了图例 onClick 函数,但无法访问图表实例。我应该可以访问实例,因为应该可以访问图表 getDatasetMeta() 方法。遵循文档中的说明:
https ://www.chartjs.org/docs/2.9.3/configuration/legend.html
function(e, legendItem) {
var index = legendItem.datasetIndex;
var ci = this.chart;
var meta = ci.getDatasetMeta(index);
// See controller.isDatasetVisible comment
meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
// We hid a dataset ... rerender the chart
ci.update();
}
请告知是否有一种方法可以访问 Bar 的实例,而不是像这个 new Bar () 那样手动创建它。
例子:
function options() => ({
legend: {
onClick: function (e, legendItem){
//Here I would like to set legend hidden and some other things
}
}
});
class Component extends React.Component {
render() {
return <Bar data={data()} options={options()}><Bar/>
}
}
解决方案
根据包装器中的这个问题,您可以在 bar 组件上放置一个 ref,即图表实例https://github.com/reactchartjs/react-chartjs-2/issues/3
<div className={classes.chartContainer}>
<Line
ref={myChartRef}
data={chartData}
options={options}
/>
</div>
const myChartRef = React.createRef();
const handleResetZoom = () => {
let chart = myChartRef.current.chartInstance;
chart.resetZoom();
};
推荐阅读
- android - 如何从具有不同数据的通知中意图不同的活动?
- r - 在 R 中使用 REGEX 将值中的特定字符串提取为新列?
- python - jupyter notebook 无法导入keras
- arduino - 为什么当我直接从 TX 和 RX arduino 连接到 TX 和 RX USB(D+ 和 D-)时,我无法从 USB 接收数据到 arduino
- r - DF中多个变量的单变量滚动窗口的R循环
- algorithm - 检测几何中的相交三角形
- c# - 实体框架调用存储过程
- r - 基于 CheckBoxGroupButtons 长度的子图中的闪亮和 Plotly 反应量行(错误:(列表)对象不能被强制输入“双”)
- php - Phug PHP - 变量打印两次
- r - ggplot() 中的热图,绘制所有图层