當對new data is joined進行選擇時,我對d3中的UPDATE和MERGE之間的區別感到困惑。什麼時候使用selection.data(...)。something()與selection.merge()。something()in d3?
ENTER很容易;它適用於新的元素。
EXIT很簡單;它適用於舊數據中的元素。
如何知道何時使用UPDATE與MERGE?
var thingies = d3.selectAll('.mythingy')
thingies.data(newData).call(handle_update) // UPDATE
.enter().call(handle_enter) // ENTER
.merge().call(handle_merge) // MERGE
.exit().call(handle_exit) // EXIT
?
你總是要使用更新,所以問題是「何時合併」?如果您想將相同的邏輯應用於「輸入」和「更新」選擇,則合併。有時候,你想要在與'update'合併之前以不同的方式處理'enter'選項。在你的鏈接中,麥克將'.attr(「r」,2.5)'應用於輸入選擇,然後THEN與更新合併。更新選項已經應用了'.attr(「r」,2.5)'。 –
首先,沒有*更新vs合併*。 「merge」是爲了去除D3 v2中引入的「魔術」而創建的。看看S.O.中的這個例子。 docs:https://stackoverflow.com/documentation/d3.js/5749/update-pattern/24929/merging-selections#t=201706162120068208209 –