示例节点

删除中间节点

本示例演示了如何在从链中间删除节点时恢复已删除的边。换句话说,如果我们按顺序连接了三个节点 - a->b->c - 并且我们删除了中间节点 b,本示例演示了如何最终得到图形 a->c

为了实现这一点,我们需要使用一些部分

  • onNodesDelete 回调让我们知道何时删除了节点。
  • getConnectedEdges 为我们提供了连接到节点的所有边,无论是作为源还是目标。
  • getIncomersgetOutgoers 为我们提供了连接到节点的节点,作为源或目标。

总而言之,这使我们能够获取连接到已删除节点的所有节点,并将它们重新连接到已删除节点连接到的任何节点。

export default function App() {
  const data: string = "world"

  return <h1>Hello {data}</h1>
}

只读

虽然这个例子不到 20 行代码,但需要消化很多内容。让我们分解其中的一些内容

  • 我们的 onNodesDelete 回调使用一个参数调用 - deleted - 这是一个包含刚刚删除的每个节点的数组。如果您选择单个节点并按删除键,则 deleted 将只包含该节点,但如果您进行选择,则该选择中的所有节点都将在 deleted 中。

  • 我们创建了一个新的边数组 - remainingEdges - 它包含流中与我们刚刚删除的节点无关的所有边。

  • 我们通过对 incomers 数组进行扁平映射创建另一个边数组。这些是连接到已删除节点作为源的节点。对于这些节点中的每一个,我们创建一个新的边,该边连接到 outgoers 数组中的每个节点。这些是连接到已删除节点作为目标的节点。

为了简洁起见,我们在同时重命名绑定的变量时使用对象解构(例如 ({ id: source }) => ...) 解构对象的 id 属性并将其绑定到名为 source 的新变量),但您不需要这样做

快速参考