问题
基本上,我试图让一个常规的 HTML 元素接受来自react-dnd的拖动对象,但我无法drop触发该事件。我假设 drop “失败”是因为内部react-dnd认为canDrop是错误的,因为我们没有将鼠标悬停在react-dnddropTarget 上。
我想知道是否可以判断react-dnd某个 div(在反应元素之外)可以安全放置。
背景
我正在实施react-dnd一个应用程序,到目前为止它进展顺利。然而,在我们的应用程序的一部分中,一些元素不是由 React 创建的,虽然它目前接受从文件系统中删除文件(使用HTML 拖放 API),但我也希望它能够接受来自react-dnd 的可拖动项目。
到目前为止,所有与拖动相关的常规事件都可以正常工作,只是该drop事件不会为 react-dnd 可拖动事件触发。这让我觉得这与我没有调用preventDefault某些事件有关(这似乎是许多与该主题相关的 StackOverflow 帖子中的解决方案),但添加这些更改并没有什么不同。同时,该drop事件在 drop files时仍然会触发,所以显然有些东西工作正常。
这让我认为 drop “失败”是因为内部react-dnd认为canDrop是错误的,因为我们没有将鼠标悬停在react-dnddropTarget 上。
我不知道如何使我的放置目标成为react-dnddropTarget。目标的父组件是一个相当广泛的 Class 组件,所以钩子(虽然很理想)在那里是不可能的(并且转换为函数组件会做太多的工作)。使用高阶组件也不起作用,因为无法从我要创建高阶组件的任何上下文中访问处理 drop 的代码。
有没有办法告诉react-dnd一个普通的 DOM 元素可以安全地删除?