两个拖放库有冲突

Two drag and drop libraries having conflict

我们都在使用 react-sortable-hocreact-dropzone,如果在不同的页面上,它们工作正常。但是,当在同一页面上使用 react-dropzone 时,react-sortable-hoc 无法正常工作,因为我注意到 react-dropzone 也会被来自 react-sortable-hoc 的拖动事件触发。 (例如,我无法再将一个项目拖到其他项目之间。)

我尝试在 react-sortable-hoconSortStart 事件中添加 e.preventDefault()e.stopPropagation(),但 react-dropzone 仍然被触发。

还有什么其他方法可以让他们一起玩得开心/不让对方受到影响?

如果问题是在dropping时引起的(不是在开始拖动时):react-dropzone 接管了整个window 关于文件放置,以防止浏览器在用户错过放置区域时从当前页面导航到放置的文件(常见的烦恼)。

更具体地说,dragoverdrop 处理程序是 registered on the document:

document.addEventListener('dragover', onDocumentDragOver, false)
document.addEventListener('drop', onDocumentDrop, false)

如果这是问题所在,您应该可以通过将 react-dropzone option preventDropOnDocument 设置为 false(默认为 true)来规避此问题。

或者,您可以尝试使用 react-dropzone option noDragEventsBubbling,但我认为这会解决相反的问题(删除文件时在 react-sortable-hoc 上触发事件)

我创建了一个沙盒并尝试重现您在同一组件中同时使用 react-dropzonereact-sortable-hoc 的代码。而且效果很好,没有问题。

https://codesandbox.io/s/nifty-ganguly-khswc?file=/src/App.js:1156-1485