0

下面是我的拖动源规范的 canDrag 方法:

const itemDragSource = {
    canDrag(props, monitor) {
        if(props.canDrag && !props.canDrag(props.itemData)) {
            if(props.dragUndraggable){
                debugger;
                props.dragUndraggable(props.itemData, monitor.getInitialClientOffset());
            }
            return false;
        }
        return true;
    }
}

问题是monitor.getInitialClientOffset返回null,那么getInitialSourceClientOffset和getClientOffset呢?关于此时如何获得鼠标位置的任何想法?

4

1 回答 1

0

这两个函数(以及所有获取位置函数)在 canDrag 内部返回 null ,因为此时没有任何内容被拖动(根据: http://gaearon.github.io/react-dnd/docs-drag-source-monitor . html ). 因此,如果您不能将该逻辑放在其他地方(例如在 isDragging 或 endDrag 中),则需要实现一些外部方案来跟踪鼠标位置,可能类似于这里建议的内容:Javascript - Track mouse position

于 2016-09-05T21:52:25.330 回答