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 | - |
target | DOM 节点或者 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
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
target | DOM 节点或者 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 | - |