Loading...
快速实现节点拖拽的 Hook
const { startDrag } = useDnd();
const {startDrag: (n, e) => void} = useDnd(options: Options);
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
startDrag | 拖拽节点函数 | (n: NodeOptions, e: React.MouseEvent<Element, MouseEvent>) => void | - |
NodeOptions 除了继承 Node 类型之外,还拥有两个属性
Node相关文档请参考 Node
interface NodeOptions extends Node {selected?: boolean; // 是否被选中draggable?: boolean; // 是否可拖拽}
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
options | 拖拽配置 | Options | - |
使用 useDnd
进行拖拽的时候,可以对其进行配置
Options 类型如下:
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
scaled | 是否应该缩放拖动节点 | boolean | false |
dndContainer | 如果设置 dndContainer ,在 dndContainer 上放开鼠标不会放置节点,常用于 dnd 容器处于画布上面的场景 | HTMLElement | - |
draggingContainer | 自定义拖拽画布容器 | HTMLElement | document.body |
validateNode | 是否应该缩放拖动节点 | (droppingNode: Node, options: ValidateNodeOptions) => boolean | Promins<boolean> | - |