logo

X6

  • 文档
  • API
  • 图表示例
  • 常见问题
  • 更新日志
  • XFlow
  • 所有产品antv logo arrow
  • 2.x
  • 画布
    • 画布
    • 网格
    • 背景
    • 画布平移
    • 画布缩放
    • 视口变换
    • 坐标系
  • 元素
    • 元素
    • 节点
    • 边
    • 标签
    • 箭头
    • 元素属性
    • 交互
  • MVC
    • 模型
    • 视图
  • 扩展
    • 节点工具
    • 边上工具
    • 路由
    • 连接器
    • 节点的锚点
    • 边的锚点
    • 连接点
    • 连接桩布局
    • 连接桩标签布局
    • 属性
    • 高亮器
    • 滤镜

视图

上一篇
模型
下一篇
节点工具

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...

配置

async

是否是异步渲染的画布。异步渲染不会阻塞 UI,对需要添加大量节点和边时的性能提升非常明显。但需要注意的是,一些同步操作可能会出现意外结果,比如获取某个节点的视图、获取节点/边的包围盒等,因为这些同步操作触发时异步渲染可能并没有完成。

virtual

是否只渲染可视区域内的元素,默认为 false,如果设置为 true,首屏加载只会渲染当前可视区域内的元素,当拖动画布或者缩放画布时,会根据画布窗口大小自动加载剩余元素。在元素数量很大的场景,性能提升非常明显。

magnetThreshold

鼠标移动多少次后才触发连线,或者设置为 'onleave' 时表示鼠标移出元素时才触发连线,默认为 0。

moveThreshold

触发 'mousemove' 事件之前,允许鼠标移动的次数,默认为 0。

clickThreshold

当鼠标移动次数超过指定的数字时,将不触发鼠标点击事件,默认为 0。

preventDefaultContextMenu

是否禁用画布的默认右键,默认为 true。

preventDefaultBlankAction

在画布空白位置响应鼠标事件时,是否禁用鼠标默认行为,默认为 true。

onPortRendered

(
this: Graph,
args: {
node: Node
port: Port
container: Element
selectors?: Markup.Selectors
labelContainer: Element
labelSelectors?: Markup.Selectors
contentContainer: Element
contentSelectors?: Markup.Selectors
},
) => void

当某个连接桩渲染完成时触发的回调,参数如下:

名称类型非空描述
nodeNode✓节点实例。
portPort✓连接桩选项。
containerElement✓连接桩的容器元素。
selectorsMarkup.Selectors连接桩 Markup 渲染后的选择器键值对。
labelContainerElement✓连接桩标签的容器元素。
labelSelectorsMarkup.Selectors连接桩标签 Markup 渲染后的选择器键值对。
contentContainerElement✓连接桩内容的容器元素。
contentSelectorsMarkup.Selectors连接桩内容 Markup 渲染后的选择器键值对。

例如,我们可以渲染一个 React 类型的连接桩。

const graph = new Graph({
container: this.container,
onPortRendered(args) {
const selectors = args.contentSelectors
const container = selectors && selectors.foContent
if (container) {
ReactDOM.render(
<Tooltip title="port">
<div className="my-port" />
</Tooltip>,
container,
)
}
},
})

onEdgeLabelRendered

(
this: Graph,
args: {
edge: Edge
label: Edge.Label
container: Element
selectors: Markup.Selectors
},
) => void

当边的文本标签渲染完成时触发的回调,参数如下:

名称类型非空描述
edgeEdge✓边实例。
labelEdge.Label✓文本标签选项。
containerElement✓文本标签容器。
selectorsMarkup.Selectors✓文本标签 Markup 渲染后的选择器键值对。

我们可以在定义 Label 的 Markup 时添加 <foreignObject> 元素来支持 HTML 和 React 的渲染能力。

const graph = new Graph({
container: this.container,
onEdgeLabelRendered: (args) => {
const { selectors } = args
const content = selectors.foContent as HTMLDivElement
if (content) {
content.style.display = 'flex'
content.style.alignItems = 'center'
content.style.justifyContent = 'center'
ReactDOM.render(<Button size="small">Antd Button</Button>, content)
}
},
})

createCellView

(this: Graph, cell: Cell) => CellView | null | undefined

自定义元素的视图,可以返回一个 CellView,会替换默认的视图,如果返回 null,则不会渲染,如果返回 undefined,会按照默认方式渲染。

方法

findView(...)

findView(ref: Cell | Element): CellView | null

根据节点/边或元素查找对应的视图。

findViewByCell(...)

findViewByCell(cellId: string | number): CellView | null
findViewByCell(cell: Cell | null): CellView | null

根据节点/边 ID 或实例查找对应的视图。

findViewByElem(...)

findViewByElem(elem: string | Element | undefined | null): CellView | null

根据元素选择器或元素对象查找对应的视图。

findViewsFromPoint(...)

findViewsFromPoint(x: number, y: number): CellView[]
findViewsFromPoint(p: Point.PointLike): CellView[]

返回节点/边的包围盒包含指定点的视图。

findViewsInArea(...)

findViewsInArea(
x: number,
y: number,
width: number,
height: number,
options?: FindViewsInAreaOptions,
): CellView[]
findViewsInArea(
rect: Rectangle.RectangleLike,
options?: FindViewsInAreaOptions,
): CellView[]

返回节点/边的包围盒与指定矩形相交的视图,当 options.strict 为 true 时需要节点/边的包围盒完全包含指定的矩形。

findViews(...)

findViews(ref: Point.PointLike | Rectangle.RectangleLike): CellView[]

返回节点/边的包围盒包含指定的点或与指定的矩形相交的视图。