React-dnd: 修复嵌套的拖动源以及它们如何与canDrag一起使用

创建于 2015-02-27  ·  4评论  ·  资料来源: react-dnd/react-dnd

这与#87有关,但技术性更高。 当前嵌套的拖动源将一起激活。 这是非常非常错误的行为。 子级拖动源应_always_阻止父级激活。

但这并不像HTML5后端那样简单。

我尝试将e.stopPropagation()dragstart处理程序中,但是还有另一个问题。 假设ListCard都是拖动源, CardList 。 假设Card具有canDrag(): false 。 在这种情况下,我们无法调用stopPropagation() ,因为那样会阻止事件到达父级。

好的,让我们将if (DragOperationStore.isDragging()) return;dragstart处理程序中。 但是还有另一个问题:即使事件已经到达父级,但是如果您实际拖动,浏览器将使用原始(子级)目标作为拖动预览。

如果未在beginDrag指定this.getDOMNode()作为dragPreview则可以通过使用this.getDOMNode()来解决此问题,从而确保拖动预览是当前目标。 我还没有尝试过。 无论哪种方式,这似乎都不是一个复杂的问题,值得一试!

bug up for grabs

最有用的评论

有没有解决方案可以在canDrag函数返回false时停止调用父级?

所有4条评论

当然,我们需要对dragPreview进行一些约束

像什么?

在0.9.2中修复。
现场演示: http ://gaearon.github.io/react-dnd/#/nesting -sources

有没有解决方案可以在canDrag函数返回false时停止调用父级?

此页面是否有帮助?
0 / 5 - 0 等级