Reclaim element id for all removed nodes (#3782)
* reclaim el id for nested dyn nodes * reclaim root element ids as well
This commit is contained in:
1 parent
1db4b2a13d
commit
a0f83f2679
2 files changed
+10
-7
No files matched your search
@@ -328,6 +328,9 @@ impl VNode {
|
|||||||
to.remove_node(id);
|
to.remove_node(id);
|
||||||
}
|
}
|
||||||
dom.reclaim(id);
|
dom.reclaim(id);
|
||||||
|
} else {
|
||||||
|
let id = dom.get_mounted_root_node(mount, idx);
|
||||||
|
dom.reclaim(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -379,8 +382,8 @@ impl VNode {
|
|||||||
} else {
|
} else {
|
||||||
to.remove_node(id);
|
to.remove_node(id);
|
||||||
}
|
}
|
||||||
dom.reclaim(id)
|
|
||||||
}
|
}
|
||||||
|
dom.reclaim(id)
|
||||||
}
|
}
|
||||||
Fragment(nodes) => {
|
Fragment(nodes) => {
|
||||||
for node in &nodes[..nodes.len() - 1] {
|
for node in &nodes[..nodes.len() - 1] {
|
||||||
|
|||||||
@@ -149,13 +149,13 @@ fn removes_one_by_one() {
|
|||||||
dom.render_immediate_to_vec().edits,
|
dom.render_immediate_to_vec().edits,
|
||||||
[
|
[
|
||||||
LoadTemplate { index: 0, id: ElementId(2) },
|
LoadTemplate { index: 0, id: ElementId(2) },
|
||||||
CreateTextNode { value: "0".to_string(), id: ElementId(6) },
|
CreateTextNode { value: "0".to_string(), id: ElementId(3) },
|
||||||
ReplacePlaceholder { path: &[0], m: 1 },
|
ReplacePlaceholder { path: &[0], m: 1 },
|
||||||
LoadTemplate { index: 0, id: ElementId(8) },
|
LoadTemplate { index: 0, id: ElementId(5) },
|
||||||
CreateTextNode { value: "1".to_string(), id: ElementId(9) },
|
CreateTextNode { value: "1".to_string(), id: ElementId(6) },
|
||||||
ReplacePlaceholder { path: &[0], m: 1 },
|
ReplacePlaceholder { path: &[0], m: 1 },
|
||||||
LoadTemplate { index: 0, id: ElementId(10) },
|
LoadTemplate { index: 0, id: ElementId(7) },
|
||||||
CreateTextNode { value: "2".to_string(), id: ElementId(11) },
|
CreateTextNode { value: "2".to_string(), id: ElementId(8) },
|
||||||
ReplacePlaceholder { path: &[0], m: 1 },
|
ReplacePlaceholder { path: &[0], m: 1 },
|
||||||
ReplaceWith { id: ElementId(4), m: 3 }
|
ReplaceWith { id: ElementId(4), m: 3 }
|
||||||
]
|
]
|
||||||
@@ -420,7 +420,7 @@ fn remove_many() {
|
|||||||
edits.edits,
|
edits.edits,
|
||||||
[
|
[
|
||||||
LoadTemplate { index: 0, id: ElementId(9,) },
|
LoadTemplate { index: 0, id: ElementId(9,) },
|
||||||
CreateTextNode { value: "hello 0".to_string(), id: ElementId(7,) },
|
CreateTextNode { value: "hello 0".to_string(), id: ElementId(10,) },
|
||||||
ReplacePlaceholder { path: &[0,], m: 1 },
|
ReplacePlaceholder { path: &[0,], m: 1 },
|
||||||
ReplaceWith { id: ElementId(11,), m: 1 },
|
ReplaceWith { id: ElementId(11,), m: 1 },
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in new issue
Block a user