react-dnd与 sortablejs同时使用造成Cannot have two HTML5 backends at the same time问题
·
我有个需求需要在同一个页面中同时存在使用react-dnd库的table拖拽和使用sortablejs库的div拖拽,出现了下面这个问题

大模型给我推荐的解决方案有一下几种,并推荐使用一和三结合
1. 阻止ReactSortable的拖放事件冒泡,避免被react-dnd捕获。
2. 更换react-dnd的后端为TouchBackend,并限制其作用范围。
3. 使用CSS或事件处理隔离两者的拖放区域。
4. 调整两者的配置,确保不监听相同的元素或事件类型。
通过验证下来第一种,第三种都不生效,第四种由于不符合我的代码结构所以没有试验
第三种方法可以解决这个问题
使用 TouchBackend 或 MouseBackend 替代 HTML5Backend,减少事件冲突。
npm install react-dnd-touch-backend
import { DndProvider } from 'react-dnd';
import { TouchBackend } from 'react-dnd-touch-backend';
// 在组件中使用:
<DndProvider
backend={TouchBackend}
options={{ enableMouseEvents: true }} // 允许鼠标事件
key="menuMenus"
>
{/* 你的组件 */}
</DndProvider>
除此之外,为了解决Sortablejs中scrollSensitivity不起作用的问题,我给ReactSortable中添加了forceFallback=true意外发现可以解决上述问题,具体描述可以看我的另一篇帖子Sortablejs中scrollSensitivity不起作用_sortablejs滚动问题-CSDN博客
更多推荐
所有评论(0)