ノード

中間ノードの削除

この例では、チェーンの中間からノードを削除したときに削除されたエッジを復元する方法を示します。言い換えると、3つのノードがシーケンスで接続されている場合 - a->b->c - 中間ノードbを削除した場合、この例ではグラフa->cになる方法を示します。

これを実現するには、いくつかの要素を使用する必要があります。

  • onNodesDeleteコールバックを使用すると、ノードが削除されたときに通知されます。
  • getConnectedEdgesを使用すると、ソースまたはターゲットとしてノードに接続されているすべてのエッジを取得できます。
  • getIncomersgetOutgoersを使用すると、ソースまたはターゲットとしてノードに接続されているノードを取得できます。

これらを組み合わせることで、削除されたノードに接続されているすべてのノードを取得し、削除されたノードが接続されていた任意のノードに再接続できます。

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

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

読み取り専用

この例は20行未満のコードですが、理解するには多くの情報が必要です。いくつか分解してみましょう。

  • onNodesDeleteコールバックは、1つの引数deletedで呼び出され、これは削除されたすべてのノードの配列です。個々のノードを選択してDeleteキーを押すと、deletedにはそのノードのみが含まれますが、複数選択すると、その選択範囲内のすべてのノードがdeletedに含まれます。

  • フロー内のエッジすべてを、削除したノードとは無関係なものだけを含む新しいエッジ配列remainingEdgesを作成します。

  • incomersの配列を`flatMap`することで、別のエッジ配列を作成します。これらは、ソースとして削除されたノードに接続されていたノードです。これらのノードごとに、outgoersの配列内の各ノードに接続する新しいエッジを作成します。これらは、ターゲットとして削除されたノードに接続されていたノードです。

簡潔にするために、オブジェクトのデストラクチャリングを行いながら、バインドされる変数の名前を変更しています(例:({ id: source }) => ...)はオブジェクトのidプロパティをデストラクチャリングし、sourceという新しい変数にバインドします)が、これは必須ではありません。

クイックリファレンス