logo

X6

  • 文档
  • API
  • 图表示例
  • 常见问题
  • 更新日志
  • XFlow
  • 所有产品antv logo arrow
  • 2.x
  • 开始
    • 简介
    • 快速上手
  • 组件
    • XFlowGraph 画布
    • Background 背景
    • Grid 网格
    • Clipboard 复制粘贴
    • History 撤销重做
    • Minimap 小地图
    • Snapline 对齐线
    • Transform 图形变换
    • Control 控制器
  • Hook
    • useGraphInstance
    • useGraphStore
    • useGraphEvent
    • useDnd
    • useClipboard
    • useExport
    • useHistory
    • useKeyboard
  • Store

useDnd

上一篇
useGraphEvent
下一篇
useClipboard

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

快速实现节点拖拽的 Hook

基础用法

const { startDrag } = useDnd();
node1
node2
node3

API

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是否应该缩放拖动节点booleanfalse
dndContainer如果设置 dndContainer,在 dndContainer 上放开鼠标不会放置节点,常用于 dnd 容器处于画布上面的场景HTMLElement-
draggingContainer自定义拖拽画布容器HTMLElementdocument.body
validateNode是否应该缩放拖动节点(droppingNode: Node, options: ValidateNodeOptions) => boolean | Promins<boolean>-