reactjs - REACT-拖动事件触发多次(默认阻止)
问题描述
所以我有一个带有单元格组件的网格,我需要它们与拖动效果进行交互。
这就是我添加监听器的方式
useEffect(() => {
window.addEventListener('mouseup', onDragLeave);
window.addEventListener('dragstart', onDragStart);
window.addEventListener('dragenter', onDragEnter);
window.addEventListener('dragover', onDragOver);
window.addEventListener("drop", onDrop);
}, []);
我也尝试在设置监听器后删除它们,如下所示
-`useEffect(() => {
window.addEventListener('mouseup', onDragLeave);
window.addEventListener('dragstart', onDragStart);
window.addEventListener('dragenter', onDragEnter);
window.addEventListener('dragover', onDragOver);
window.addEventListener("drop", onDrop);
return(()=>{
window.removeEventListener('mouseup', onDragLeave);
window.removeEventListener('dragstart', onDragStart);
window.removeEventListener('dragenter', onDragEnter);
window.removeEventListener('dragover', onDragOver);
window.removeEventListener("drop", onDrop);
})
}, [onDragLeave,onDragStart,onDragEnter,onDragOver,onDrop]);
`
这是我的功能的一个例子(看起来都一样)
const onDragOver = useCallback((e) => {
e.stopPropagation();
e.preventDefault();
console.log("over")
return false;
}, []);
所以第一个问题是事件——进入、结束和放下根本没有触发。同时启动和离开火2-4次。
我发现的所有解决方案都在谈论 e.stopPropagation() 和 e.preventDefault() 但它们似乎对我的代码没有影响。
不知道我做错了什么。
解决方案
推荐阅读
- android - 如何阻止 Android 中的 WebView 将“https”转换为“http”?
- bootstrap-4 - 一个引导程序 4 导航栏上的多个断点
- solr - solr 是否可以与 hdfs 一起使用以根据关键字搜索记录?
- php - Laravel 控制器是否在请求之间共享属性?
- amazon-web-services - AWS EMR Spark 文件拆分
- android - 离线地图在 Heremaps API (Android) 上的 SDCard 上时 MapEngine 初始化缓慢
- python - 计算两个点列表的欧几里得距离矩阵的最快方法
- wolfram-mathematica - 如何简化符号'
- php - 有效的 YII2 crypt 功能已停止
- php - 无法浏览到新 Laravel Apache2 设置上的主 URL 以外的任何内容。错误:在此服务器上找不到请求的 URL