reactjs - 美丽的 dnd - 传递可拖动数据 onDropEnd
问题描述
我的可拖动元素上有一些可用的数据。我想在 onDragEnd 上使用该数据,但我没有找到传递任何可拖动数据的方法,除了draggableId
传递到result
onDragEnd 事件中的数据。
基本上我需要的是可拖动的某种自定义道具,它将显示在 DragDropContext 事件中。就像是:
<>
{cmps.map(cmp => (
<Draggable
key={cmp.name}
draggableId={cmp.name}
index={index}
// this is what im missing
payload={cmp}
// -----------------------
>
<Cmp/>
</Draggable>
)}
</>
解决方案
从您的示例看来,您正在尝试访问数组中的项目作为所需的有效负载。cmp 数组中的单个 cmp。
如果我误解了您的问题,请原谅我,但是在您设置状态以重新排序列表数据之前在您的 onDragEnd 中,您可以做这样的事情吗?
onDragEnd(result) {
// Access to data from list
console.log(cmps[result.source.index]);
// ...
}
我分叉了一个沙箱,并添加了上面的控制台日志来说明: https ://codesandbox.io/s/vertical-list-forked-qiljq?file=/index.js
推荐阅读
- performance - Intel Xeon Platinum 8168 CPU 上的 Vmovntpd 指令
- python - 如何在 Python 中使用正则表达式从 url 中提取特定模式?
- pandas - 将熊猫数据框上传到红移 - 关系“sqlite_master”不存在
- python - UnicodeDecodeError:“charmap”编解码器无法解码位置 24 中的字节 0x81:字符映射到
- c# - 在 C# 中的 rabbit Mq 中获取 xDeath 中队列消息的最大重试次数
- jquery - 取消先前的 ajax 调用并在文本发生更改时从头开始
- angular - 试图列出 Firestore 数据库的集合
- android - 是否可以仅允许某个 webview 的明文 HTTP 流量?
- flutter - GestureDetector 内卡片中的图像
- android - PiracyChecker 无法检查应用程序是否从 Google Play 商店安装