reactjs - 使用 highcharts 移除事件监听器
问题描述
我使用 highcharts 库制作了一个 3d 散点图。我还让它可拖动并添加了鼠标事件。现在,我无法删除事件侦听器。
单击时,图表会移动..但在第二次单击时...我想停止拖动图表。它应该停止移动。
like so
const init = (chart) => {
window.addEventListener("click", (eStart) => {
isClicked = true;
console.log("click");
const posX = eStart.chartX,
posY = eStart.chartY,
alpha = chartOptions.chart.options3d.alpha,
beta = chartOptions.chart.options3d.beta,
sensitivity = 4; // lower is more sensitive
const drag = (e) => {
{
const newBeta = beta + (posX - e.pageX) / sensitivity;
chart.options.chart.options3d.beta = newBeta;
// Run alpha
const newAlpha = alpha + (e.pageY - posY) / sensitivity;
chart.options.chart.options3d.alpha = newAlpha;
chart.redraw(false);
}
};
window.addEventListener("touchmove", (e) => drag(e));
window.addEventListener("mousemove", (e) => drag(e));
window.addEventListener("mouseup", (e) => unBind(e));
window.addEventListener("touchend", (e) => unBind(e));
});
};
const unBind = (e) => {
console.log("mouse up triggered");
e.preventDefault();
e.stopPropagation();
isClicked = false;
window.removeEventListener("mousemove", () => {});
};
解决方案
我将从我们官方的 Highcharts React 包装器开始:
https://github.com/highcharts/highcharts-react
假设我们有这个 scatter 3d 示例作为我们的模板:
https://stackblitz.com/edit/react-rhbyat?file=index.js
你想第二次阻止移动点,对吧?
推荐阅读
- java - System.out 神秘地消失了,尽管代码/行执行
- javascript - 如何将不和谐消息定义为字符串或变量?
- itext - Java Itext 数字签名消息签名有效
- jenkins - 如何在jenkins groovy中并行运行方法
- sql-server - 如何在 SQL Server 中使用 Triple_DES 算法?
- sql-server - 如何在 SQL Server 2005 中捕获转储事务
- azure - 逻辑应用程序:如何在特定时间段内处理来自服务总线队列的消息?
- angular - 在 for-if 语句 Angular 中进行单元测试
- r - 如何更好地可视化具有大范围值的条形图(R Plotly)?
- php - 带有 laravel 的子文件夹中的香草 php 文件 - 找不到页面错误