首页 > 解决方案 > React,如何防止在拖动后执行单击事件?

问题描述

我有 Draggable 元素,在其中,我有一个带有 onClick 事件的组件。拖动结束时触发点击事件。我的可拖动元素看起来像这样。我使用了一个名为react-draggable的包。

<Draggable
    position={this.state.realPosition}
    onStart={this.handleStart}
    onDrag={this.handleDrag}
    onStop={this.handleStop}
    disabled={this.state.isDialogOpen}
    bounds="parent">
      <div style={{"width":"fit-content"}}>
        <Helmet getDialogStatus={this.handleClick} />  
      </div>
</Draggable>

我在 Helmet 组件中有 onClick 事件,它打开一个对话框。当我拖动并释放元素时,将打开此对话框。我的问题是如何防止这种行为以及如何将这些行为分开?

谢谢。

标签: reactjsonclickdrag-and-dropdraggable

解决方案


const [isDragging, setIsDragging] = useState<any>(false);

const eventControl = (event: { type: any; }, info: any) => {


    if (event.type === 'mousemove' || event.type === 'touchmove') {
      setIsDragging(true)
    }

    if (event.type === 'mouseup' || event.type === 'touchend') {
      setTimeout(() => {
        setIsDragging(false);
      }, 100);

    }
  }

进而 ,

<Draggable
    bounds="parent"
    onDrag={eventControl}
    onStop={eventControl}
> ...

推荐阅读