Skip to content
On this page

useDrop & useDrag

处理元素拖拽的 Hook。

useDrop 可以单独使用来接收文件、文字和网址的拖拽。

useDrag 允许一个 DOM 节点被拖拽,需要配合 useDrop 使用。

向节点内触发粘贴动作也会被视为拖拽。

代码演示

API

useDrag

useDrag<T>(
  data: any,
  target: (() => Element) | Element | MutableRefObject<Element>,
  options?: DragOptions
);
useDrag<T>(
  data: any,
  target: (() => Element) | Element | MutableRefObject<Element>,
  options?: DragOptions
);

Params

参数说明类型默认值
data拖拽的内容any-
targetDOM 节点或者 Ref 对象() => Element | Element | MutableRefObject<Element>-
options额外的配置项DragOptions-

DragOptions

参数说明类型默认值
onDragStart开始拖拽的回调(e: DragEvent) => void-
onDragEnd结束拖拽的回调(e: DragEvent) => void-

useDrop

useDrop<T>(
  target: (() => Element) | Element | MutableRefObject<Element>,
  options?: DropOptions
);
useDrop<T>(
  target: (() => Element) | Element | MutableRefObject<Element>,
  options?: DropOptions
);

Params

参数说明类型默认值
targetDOM 节点或者 Ref 对象() => Element | Element | MutableRefObject<Element>-
options额外的配置项DragOptions-

DropOptions

参数说明类型默认值
onText拖拽/粘贴文字的回调(text: string, e: DragEvent) => void-
onFiles拖拽/粘贴文件的回调(files: File[], e: DragEvent) => void-
onUrl拖拽/粘贴链接的回调(text: string, e: DragEvent) => void-
onDom拖拽/粘贴自定义 DOM 节点的回调(content: any, e: DragEvent) => void-
onDrop拖拽任意内容的回调(e: DragEvent) => void-
onPaste粘贴内容的回调(e: DragEvent) => void-
onDragEnter拖拽进入(e: DragEvent) => void-
onDragOver拖拽中(e: DragEvent) => void-
onDragLeave拖拽出去(e: DragEvent) => void-

Source

源码文档示例