JavaScript is required

图谱数据流转与修改(Data Flow & CRUD)

本页总结 relation-graph 中数据加载、查询、修改的完整路径。

1. 三种主要数据接入方式

方式 A:增量 API(编辑器场景推荐)

  • addNodesaddLinesaddFakeLines
  • 各类 update/remove API
  • 自主控制布局与视图行为

适合动态、频繁更新。

方式 B:setJsonData 一次性加载

  • 一次设置整图数据
  • 内部包含 clear/add/layout/center/zoom 流程
  • 适合首屏完整加载

方式 C:initialData 属性初始化

  • 在组件初始化阶段注入数据
  • 常用于初始化/SSR 风格场景
  • 不适合作为响应式数据更新通道

2. 查询 API

// 全量数据
graphInstance.getNodes();
graphInstance.getLines();
graphInstance.getFakeLines();
graphInstance.getLinks();

// 按 id 查询
graphInstance.getNodeById('n1');
graphInstance.getLineById('l1');
graphInstance.getFakeLineById('f1');
graphInstance.getLinkByLineId('l1');

// 关系查询
graphInstance.getRelatedLinesByNode(node);
graphInstance.getLinesBetweenNodes(node);
graphInstance.getNodeRelatedNodes(node);
graphInstance.getNetworkNodesByNode(node);
graphInstance.getDescendantNodes(node);

3. 修改 API

// Add
graphInstance.addNode(node);
graphInstance.addNodes(nodes);
graphInstance.addLine(line);
graphInstance.addLines(lines);
graphInstance.addFakeLines(fakeLines);

// Update
graphInstance.updateNode('n1', { text: 'Updated' });
graphInstance.updateLine('l1', { color: '#60a5fa' });

// Remove
graphInstance.removeNodeById('n2');
graphInstance.removeLineById('l2');
graphInstance.removeFakeLineById('f1');

// Reset
graphInstance.clearGraph();

4. 动态应用推荐流程

  1. 用增量 API 合并或追加数据。
  2. updateNode / updateLine 做局部更新。
  3. 仅在必要时重排布局。
  4. 在用户期望重新聚焦时调用 moveToCenter / zoomToFit

5. 何时使用 setJsonData

适用:

  • 首次完整数据渲染
  • 希望自动布局并自动居中缩放

不建议在高频交互编辑场景反复调用,否则会造成明显视图抖动。

6. 常见坑位

  • 直接修改 options 响应式对象并不会自动生效,运行时更新请走实例 API。
  • RGProvider 常驻而图页面反复挂载,可能遗留旧数据;加载前先 clearGraph()
  • 手动坐标模式与自动布局模式不要在同一更新阶段混用。

7. 下一步阅读