刪除中間節點
這個範例展示了當您從鏈的中間移除節點時,如何復原已刪除的邊緣。換句話說,如果我們有三個節點依序連線 - a->b->c
- 而我們刪除了中間的節點 b
,此範例將展示如何讓圖形變成 a->c
。
為達成此目標,我們需要使用一些方法
onNodesDelete
回呼會在節點被刪除時通知我們。getConnectedEdges
提供我們連線到節點的所有邊緣,無論是作為來源或目標。getIncomers
和getOutgoers
提供我們連線到節點作為來源或目標的節點。
總而言之,這讓您可以取得連線到已刪除節點的所有節點,並將它們重新連線到已刪除節點所連線的任何節點。
雖然這個範例不到 20 行程式碼,但有很多內容需要理解。讓我們分解一下
-
我們的
onNodesDelete
回呼函式會以一個參數deleted
呼叫,這是一個包含剛被刪除的每個節點的陣列。如果您選擇一個單獨的節點並按下刪除鍵,deleted
將只包含該節點,但如果您進行選擇,該選擇中的所有節點都將在deleted
中。 -
我們建立一個新的邊緣陣列 -
remainingEdges
- 其中包含流程中與我們剛刪除的節點無關的所有邊緣。 -
我們透過在
incomers
陣列上執行flatMap,建立另一個邊緣陣列。這些是作為來源連線到已刪除節點的節點。對於每個節點,我們都會建立一個新的邊緣,連線到outgoers
陣列中的每個節點。這些是作為目標連線到已刪除節點的節點。
為了簡潔,我們同時使用物件解構和重新命名綁定的變數(例如,({ id: source }) => ...)
解構物件的 id
屬性,並將其繫結到名為 source
的新變數),但您不需要這樣做