保存并恢复 (Save & Restore)
在编辑器场景中,您非常需要将用户操作后呈现的画布(Nodes 和 Edges 的状态及视图状态)持久化,并在随后重新加载它们。在 Flow 中,我们可以利用自带的方法方便地提取和恢复整个画布状态。
基础保存与恢复示例
修改下方的图表,然后尝试“保存”和“恢复”按钮。我们使用浏览器的 localStorage 来模拟持久化数据层。
状态保存与加载
核心原理
捕捉图表状态以进行持久化主要有两种方式:
- 从引擎实例捕获:这是最准确的方法。通过
ref访问FlowInstance并调用getNodes()和getEdges()等方法。这将检索所有实体的当前内部状态,包括用户驱动的位置更改。 - 外部响应式状态同步:如果您正在使用全局状态管理器(如 Pinia),您可以在组件发出更改事件(如
@nodes-drag-end)时同步您的nodes和edges数组。
实例方法参考
| 方法名 | 返回类型 | 说明 |
|---|---|---|
getNodes() | Node[] | 返回引擎中当前所有节点的深度快照。 |
getEdges() | Edge[] | 返回引擎中当前所有连线的深度快照。 |
exportJson() | string | [(需要导出插件)] 将内部图表数据包装成序列化字符串。 |