From 16eaf20b6fe206a59905a2a641419007cd804179 Mon Sep 17 00:00:00 2001 From: Josh Rose Date: Thu, 20 Feb 2025 23:09:34 -0500 Subject: [PATCH 1/2] reclaim el id for nested dyn nodes --- packages/core/src/diff/node.rs | 2 +- packages/core/tests/diff_unkeyed_list.rs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/core/src/diff/node.rs b/packages/core/src/diff/node.rs index 7225969e42..9b3a64d963 100644 --- a/packages/core/src/diff/node.rs +++ b/packages/core/src/diff/node.rs @@ -379,8 +379,8 @@ impl VNode { } else { to.remove_node(id); } - dom.reclaim(id) } + dom.reclaim(id) } Fragment(nodes) => { for node in &nodes[..nodes.len() - 1] { diff --git a/packages/core/tests/diff_unkeyed_list.rs b/packages/core/tests/diff_unkeyed_list.rs index 464319c466..9789a61513 100644 --- a/packages/core/tests/diff_unkeyed_list.rs +++ b/packages/core/tests/diff_unkeyed_list.rs @@ -149,13 +149,13 @@ fn removes_one_by_one() { dom.render_immediate_to_vec().edits, [ 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 }, - LoadTemplate { index: 0, id: ElementId(8) }, - CreateTextNode { value: "1".to_string(), id: ElementId(9) }, + LoadTemplate { index: 0, id: ElementId(5) }, + CreateTextNode { value: "1".to_string(), id: ElementId(6) }, ReplacePlaceholder { path: &[0], m: 1 }, - LoadTemplate { index: 0, id: ElementId(10) }, - CreateTextNode { value: "2".to_string(), id: ElementId(11) }, + LoadTemplate { index: 0, id: ElementId(7) }, + CreateTextNode { value: "2".to_string(), id: ElementId(8) }, ReplacePlaceholder { path: &[0], m: 1 }, ReplaceWith { id: ElementId(4), m: 3 } ] @@ -420,7 +420,7 @@ fn remove_many() { edits.edits, [ 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 }, ReplaceWith { id: ElementId(11,), m: 1 }, ] From cc8abb6b7c3c280ac322403b62b17447885b5416 Mon Sep 17 00:00:00 2001 From: Josh Rose Date: Fri, 21 Feb 2025 04:22:36 -0500 Subject: [PATCH 2/2] reclaim root element ids as well --- packages/core/src/diff/node.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/core/src/diff/node.rs b/packages/core/src/diff/node.rs index 9b3a64d963..e239fcb48f 100644 --- a/packages/core/src/diff/node.rs +++ b/packages/core/src/diff/node.rs @@ -328,6 +328,9 @@ impl VNode { to.remove_node(id); } dom.reclaim(id); + } else { + let id = dom.get_mounted_root_node(mount, idx); + dom.reclaim(id); } } }