【问题标题】:How can I hide an element while dropping using React DnD with a custom drag preview?如何在使用带有自定义拖动预览的 React DnD 拖放时隐藏元素?
【发布时间】:2017-07-24 06:50:43
【问题描述】:

我正在使用 React DnD 来处理 React 应用程序中的拖放操作。我正在使用touch backend。在这个实现中,我使用了自定义拖动预览。拖动时,我通过将其最大高度设置为 0 来隐藏“被拖动”的元素。自定义拖动预览在用户拖动时显示。如果用户将元素放在不允许的区域中,则“被拖动”的项目将动画回其原始高度。这很好。

当项目被删除时,我发送一个 redux 操作,重新排序项目列表并将先前拖动的元素放入其新位置。

但是,在 DOM 更新并在其新位置设置动画之前,拖动的项目会在其当前位置闪烁。

最大高度动画由当isDraggingtrue 时添加和删除的CSS 类控制。

我浏览了 React DnD 文档和示例(通常非常详尽),并查看了其他一些使用 React DnD 的开源项目,但似乎找不到解决方案。我假设我错过了一些简单的东西,比如我可以通过的道具。本质上,我希望isDragging 保持true 直到放置操作完成,或者能够在可拖动目标上的endDrag 方法或可放置目标上的drop 函数中更新道具。

我可以使用 vanilla javascript 来更新 endDrag 方法中的 classList,但如果可能的话,我更喜欢使用 React 工具。

有人遇到过这个问题吗?

【问题讨论】:

    标签: reactjs react-dnd


    【解决方案1】:

    我能够通过修复一个已知问题来解决这个问题,即当在 React 中卸载 DOM 节点时触摸事件停止。

    https://github.com/yahoo/react-dnd-touch-backend/issues/31

    在这个解决方案中,您创建了一个附加了触摸事件的 DOM 节点的副本,这样即使 React 在拖动过程中添加和删除元素时卸载组件,它仍然保留。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2016-05-06
      • 2011-11-26
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多