问答记录
原生 HTML5 Drag-and-Drop 与 @dnd-kit 库对比及迁移方案
创建于 2026/7/15更新于 2026/7/15
@dnd-kit
Drag and Drop
React
踩坑
## 问题描述 原生 HTML5 拖拽存在以下问题: - 首次拖拽仅选中项目(显示缩放效果)但不移动 - 需要拖拽两次才能实际移动项目 - 鼠标悬停在交互元素上时显示禁止符号 ## 根本原因 原生 HTML5 拖拽 API 设计于 2000 年代,对现代 Web 应用的复杂交互支持不佳,特别是与嵌套交互元素共存时会出现冲突。 ## 解决方案 使用 @dnd-kit 库替代原生 HTML5 拖拽: 1. 安装依赖:npm install @dnd-kit/core @dnd-kit/sortable @dnd-kit/utilities 2. 使用 PointerSensor 配合 activationConstraint: { distance: 8 } 防止误触 3. 使用 useDroppable 包装列,支持向空列拖拽 4. 使用 closestCorners 碰撞检测算法
关联知识资产
QA
资产 ID: d0b25b49-c058-4623-b122-f9d1662b70b4