React DnD:从未在Firefox上调用beginDrag()

时间:2018-05-13 12:14:21

标签: reactjs google-chrome firefox drag-and-drop react-dnd

我正在使用React DnD来处理几个不同的dragsources。在chrome中它们都可以正常工作但是对于Firefox中的一个组件,虽然看起来组件被拖动,但droptarget上没有任何反应。一些调查显示,beginDrag()从未被调用过:

我在故障组件上有以下包装器(带有一些调试打印):

DragSource(
  DIALOGUE,
  {
    beginDrag(props) {
      console.log('beginDrag()');
      return {
        id: props.id,
      };
    },
  },
  (connection, monitor) => {
    console.log('monitor.canDrag()', monitor.canDrag());
    console.log('monitor.isDragging()', monitor.isDragging());
    console.log('monitor.getItemType()', monitor.getItemType());
    console.log('monitor.getItem()', monitor.getItem());
    return {
      connectDragSource: connection.dragSource(),
      isDragging: monitor.isDragging(),
    };
  },
)

当我开始在chrome中拖动组件时(它正在工作)我看到以下控制台输出:

beginDrag()
monitor.canDrag() false
monitor.isDragging() false
monitor.getItemType() DIALOGUE
monitor.getItem() {id: "bcf5947c-29ec-4fd8-9efc-6f3810ea167a"}
monitor.canDrag() false
monitor.isDragging() true
monitor.getItemType() DIALOGUE
monitor.getItem() {id: "bcf5947c-29ec-4fd8-9efc-6f3810ea167a"}

在Firefox中,它无法正常工作,我得到了

monitor.canDrag() false
monitor.isDragging() false
monitor.getItemType() __NATIVE_URL__
monitor.getItem() Object { urls: Getter }

所以我发现永远不会调用beginDragisDragging永远不会变为真,itemTypeitem会有一些奇怪的值。

我正在使用react版本16.3.2,react-dnd版本2.6.0和Firefox版本59.0.3。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

在尝试使按钮可拖动时遇到了这个问题-事实证明,从Firefox 61.0.1(https://bugzilla.mozilla.org/show_bug.cgi?id=568313)开始,按钮不可拖动-并通过切换到进行了修复。