Agent Skills
返回列表
看板卡片拖放

看板卡片拖放

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/lk2026582。

技能介绍

要解决的问题

原生 HTML5 拖拽 API 只抛出一次 drop 事件,卡片在松手前不会跟着指针移动,也没有边界限制、惯性和坐标回写。而完整的 DnD 框架动辄几十 kB,只为了让看板卡片换一列,代价偏高。这个技能把 interact.js 的拖拽能力封装成一条可落地的链路:卡片节点 → interact().draggable() → 松手回写坐标或列,适合 Demo 验证和轻量自由摆放场景。

技能如何工作

核心依赖只有 interactjs 一项。每张卡片挂载时注册为 draggable,onEnd 回调中把新阶段或坐标交回业务层,由业务层决定换列还是仅保存位置。组件卸载时调用 destroy,对应 interact 实例的 unset(),避免监听器残留。

关键步骤:

  • 每张卡片独立挂载,拖拽结束必须回调业务逻辑(换列或存坐标),技能本身不托管业务状态。
  • 卸载路径与挂载路径对称,在 onBeforeUnmount 中调 destroy。
  • 实现要点处用 小四原创 标注,便于回溯原创写法。

适用边界与注意点

它只处理单端拖拽,不含协同看板与多人冲突合并,不要直接用于在线协作。两个高频坑:一是与 AutoAnimate 叠用时位置错乱,需先排查动画层;二是忘记 unset 造成重复绑定,表现为同一张卡片响应两次拖拽。与原生滚动共存时,用 ignoreFrom 排除卡片内的可滚动区域即可。

使用场景

  • 验收商机看板 Demo 时,需要把卡片从「待跟进」拖到「已成交」并保存列归属
  • 实现项目任务卡片自由摆放,拖动结束后把坐标写回本地存储
  • 在运营活动看板里让卡片跨列移动,但不想引入完整的拖拽框架
  • 区分卡片内滚动区域与拖拽区域,避免原生滚动和拖动互相冲突

适合人员

  • 前端工程师:需要快速实现看板拖拽交互,又不想为此引入重型 DnD 库
  • React 组件开发者:负责卡片列表,必须在卸载时清理 interact 实例避免重复绑定
  • 交互原型作者:用 Demo 验证多列卡片换位逻辑,关注 onEnd 回调能否拿到坐标
  • 技术负责人:为看板模块选型,需要评估 interact.js 方案与自研原生拖拽的成本