问题描述
我正在尝试使用 ReactJS Draggable
组件来实现跨堆叠上下文的拖放效果。我最初的灵感是这个CodePen example。当然,这不是 React,但我正在尝试使用在可滚动 div 之外创建 DOM 元素的基本策略,然后在拖动开始时将其定位在拖动开始位置上。这或多或少是有效的,但我无法解决的最后一个问题是将拖动开始事件(由滚动 div 内的组件上的鼠标移动事件触发)传输到我的可拖动元素,该元素放置在滚动div。
这是可拖动元素的定义:
<Draggable
position={props.dragState.position}
onDrag={onDrag}
onStop={dragStop}
ref={draggableRef}>
<div ref={draggedElementRef}
style={{
zIndex: 1000,visibility: { isVisible },display: "inline-block",backgroundColor: "white",padding: 10
}}>
{props.dragState.dragText}
</div>
</Draggable>
这里是我试图触发拖动的地方,但它不起作用:
if(props.dragState.dragging) {
if(!draggingNow){
setDraggingNow(true);
console.log("TRANSFER DRAG EVENT HERE");
draggableRef.current.onDragStart(
props.dragState.startDragEvent,{
node: draggedElementRef.current,x: props.dragState.position.x,y: props.dragState.position.y,deltaX: 0,deltaY: 0,lastX: props.dragState.position.x,lastY: props.dragState.position.y
});
}
} else {
if(draggingNow){
setDraggingNow(false);
}
}
在第二个块中,props.dragState.startDragEvent
目前只是对触发拖动操作的组件接收到的 onMouseMove 事件的引用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)