logo

G6

  • 文档
  • API
  • 图表示例
  • 社区
  • 所有产品antv logo arrow
  • 5.0.48
  • 数据
  • 画布操作
  • 元素操作
  • 图实例
  • 绘制与渲染
  • 视口操作
  • 布局
  • 图配置项
  • 插件
  • 交互
  • 主题
  • 数据处理
  • 事件监听
  • 导出图片
  • 坐标转换

交互

上一篇
插件
下一篇
主题

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

交互概述

交互(Behavior)是 G6 的核心构建模块,它精确定义了用户与图之间的互动行为。每个 Behavior 插件都是一个高度封装的功能单元,内部集成了特定场景下的事件监听、状态管理和响应处理逻辑。

G6 的内置 Behavior 涵盖了大多数常见交互需求,同时提供了灵活的扩展机制,支持开发者根据业务场景构建定制化交互体验。 有关完整的交互行为类型、配置选项及开发示例,请参阅 交互总览 章节。

API 参考

Graph.getBehaviors()

获取当前图表中所有已配置的交互行为。

getBehaviors(): BehaviorOptions;

返回值

  • 类型: BehaviorOptions
  • 描述: 当前图表中已配置的所有交互行为

示例

// 获取当前所有交互行为
const behaviors = graph.getBehaviors();
console.log('当前图表的交互行为:', behaviors);

Graph.setBehaviors(behaviors)

设置图表的交互行为,将替换所有现有的交互行为。

setBehaviors(behaviors: BehaviorOptions | ((prev: BehaviorOptions) => BehaviorOptions)): void;

参数

参数描述类型默认值必选
behaviors新的交互行为配置,或一个基于当前配置返回新配置的函数BehaviorOptions | (prev: BehaviorOptions) => BehaviorOptions-✓

说明

设置的交互会全量替换原有的交互,如果需要新增交互可以使用函数式更新:

graph.setBehaviors((behaviors) => [...behaviors, { type: 'zoom-canvas' }]);

示例 1: 设置基本交互

// 设置基本交互
graph.setBehaviors([
'drag-canvas', // 拖拽画布
'zoom-canvas', // 缩放画布
'drag-element', // 拖拽元素
]);

示例 2: 设置带配置的交互

graph.setBehaviors([
// 字符串形式(使用默认配置)
'drag-canvas',
// 对象形式(自定义配置)
{
type: 'zoom-canvas',
key: 'my-zoom', // 指定唯一标识,用于后续更新
sensitivity: 1.5, // 缩放灵敏度
},
// 只有节点上启用拖拽
{
type: 'drag-element',
key: 'drag-node-only',
enable: (event) => event.targetType === 'node', // 仅在节点上启用拖拽
},
]);

示例 3: 使用函数式更新

// 添加新的交互行为
graph.setBehaviors((currentBehaviors) => [
...currentBehaviors,
{
type: 'brush-select',
key: 'selection-brush',
},
]);
// 替换特定交互行为
graph.setBehaviors((currentBehaviors) => {
// 过滤掉现有的缩放交互
const filteredBehaviors = currentBehaviors.filter((behavior) => {
if (typeof behavior === 'string') return behavior !== 'zoom-canvas';
return behavior.type !== 'zoom-canvas';
});
// 添加新的缩放交互配置
return [
...filteredBehaviors,
{
type: 'zoom-canvas',
key: 'new-zoom',
enableOptimize: true,
},
];
});

Graph.updateBehavior(behavior)

更新指定的交互行为配置,需要通过 key 标识要更新的交互。

updateBehavior(behavior: UpdateBehaviorOption): void;

参数

参数描述类型默认值必选
behavior更新的交互行为配置UpdateBehaviorOption-✓

说明

如果要更新一个交互,必须在原始交互配置中指定 key 字段,以便能够准确找到并更新该交互。

示例 1: 更新交互配置

// 初始设置交互时指定 key
graph.setBehaviors([
{
type: 'zoom-canvas',
key: 'my-zoom-canvas',
sensitivity: 1.0,
},
]);
// 更新交互配置
graph.updateBehavior({
key: 'my-zoom-canvas', // 指定要更新的交互
sensitivity: 2.0, // 新的缩放灵敏度
enableOptimize: true, // 添加新配置
});

示例 2: 禁用/启用交互

// 设置带 key 的行为
graph.setBehaviors([
{
type: 'drag-canvas',
key: 'main-drag',
},
{
type: 'zoom-canvas',
key: 'main-zoom',
},
]);
// 禁用拖拽功能
graph.updateBehavior({
key: 'main-drag',
enable: false,
});
// 稍后重新启用
setTimeout(() => {
graph.updateBehavior({
key: 'main-drag',
enable: true,
});
}, 5000);

类型定义

BehaviorOptions

type BehaviorOptions = (string | CustomBehaviorOption | ((this: Graph) => CustomBehaviorOption))[];
type CustomBehaviorOption = {
// 交互类型
type: string;
// 交互 key,即唯一标识,用于标识交互,从而进一步操作此交互
key?: string;
// 针对不同类型的交互,还可能有其他配置项
[configKey: string]: any;
};

UpdateBehaviorOption

type UpdateBehaviorOption = {
// 要更新的交互的唯一标识
key: string;
// 其他要更新的配置项
[configKey: string]: unknown;
};