跳到主要内容

交互

交互概述

交互(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;
};
© Copyright 2026 Ant Group Co., Ltd..备案号:京ICP备15032932号-38
全站搜索
文档与示例输入关键词开始搜索

输入关键词,查找文档、API 与示例

↑↓选择↵打开Esc关闭