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

React DnD: beginDrag() never called on Firefox

我正在为几个不同的拖动源使用 React DnD。在 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 }

所以我看到 beginDrag 从未被调用,isDragging 永远不会变为真,并且 itemTypeitem 有一些奇怪的值。

我使用的是 React 版本 16.3.2、react-dnd 版本 2.6.0 和 Firefox 版本 59.0.3。

知道发生了什么事吗?

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