3

我有一个类似 trello 的界面,在 React.js 中实现,带有很棒的ReactDnD库,它与默认的html5 后端配合得很好。我决定切换到触控后端来支持触控设备。

无论如何,当我切换时,它“工作”,但由于我的列表列和其中的卡片都是放置目标,这似乎导致这个触摸后端出现问题。我注意到的行为与完全忽略卡片作为放置目标的行为一致,并且始终认为放置目标是包含卡片的列表。

我认为发生这种情况的原因是,当我将一张卡片从一个列表拖到另一个列表时,如果我将卡片悬停在目标列表的中间并不重要,下拉标记为在列表的末尾,这是我将鼠标悬停在列表元素的空白区域时的预期行为。如果我将鼠标悬停在中间的一张卡片上,预期的行为是在该位置标记下降,将卡片向下移动一个位置。

我什至怀疑这与返回的结果不正确有关monitor.isOver({shallow: true}),正如我在此评论中对我提出的一个 github 问题所表达的那样,但正如那里正确陈述的那样,该方法不是每个后端都实现的。但也许它的实现使用了来自后端的东西。

这是提取到独立应用程序的示例:https ://github.com/gnapse/react-dnd-trello

它的行为如上所述。该回购中有两个提交。在初始提交时,应用程序使用 Html5 后端,并按预期工作。您可以签出该提交并查看它是如何工作的。然后,如果您再次结帐 master,您可以看到它与触摸后端一起工作。当您将一张卡片从列表中拖出,并且不将其拖回该列表时,无论您将其放在卡片列表中的哪个位置,它都将始终将放置标记在末尾,而不是在中间。

此外,触摸和鼠标事件都会发生这种情况。不过,我在 iPad 模拟器中对其进行了测试,而不是真实的。

我向the提交了一份问题报告react-dnd-touch-backend但那里没有任何运气。我也考虑过向 repo 提交问题react-dnd,但由于这显然不是该项目中的错误,所以我决定在这里发布。

4

0 回答 0