From 9c2e713dae8440ca368cda4d2d8b55f6ab8f737b Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 15 Aug 2023 09:30:43 -0500 Subject: [PATCH 1/2] fix recycling nodes in native core --- packages/native-core/src/dioxus.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/native-core/src/dioxus.rs b/packages/native-core/src/dioxus.rs index 3e9ff9ee0..e5042f756 100644 --- a/packages/native-core/src/dioxus.rs +++ b/packages/native-core/src/dioxus.rs @@ -57,6 +57,12 @@ impl DioxusState { node.insert(ElementIdComponent(element_id)); if self.node_id_mapping.len() <= element_id.0 { self.node_id_mapping.resize(element_id.0 + 1, None); + } else { + if let Some(mut node) = + self.node_id_mapping[element_id.0].and_then(|id| node.real_dom_mut().get_mut(id)) + { + node.remove(); + } } self.node_id_mapping[element_id.0] = Some(node_id); } From 0d773eac63cbf8b6d9ffe459d9d5ca81c96bb2fc Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 15 Aug 2023 10:37:27 -0500 Subject: [PATCH 2/2] fix clippy --- packages/native-core/src/dioxus.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/native-core/src/dioxus.rs b/packages/native-core/src/dioxus.rs index e5042f756..c245de4fc 100644 --- a/packages/native-core/src/dioxus.rs +++ b/packages/native-core/src/dioxus.rs @@ -57,13 +57,12 @@ impl DioxusState { node.insert(ElementIdComponent(element_id)); if self.node_id_mapping.len() <= element_id.0 { self.node_id_mapping.resize(element_id.0 + 1, None); - } else { - if let Some(mut node) = - self.node_id_mapping[element_id.0].and_then(|id| node.real_dom_mut().get_mut(id)) - { - node.remove(); - } + } else if let Some(mut node) = + self.node_id_mapping[element_id.0].and_then(|id| node.real_dom_mut().get_mut(id)) + { + node.remove(); } + self.node_id_mapping[element_id.0] = Some(node_id); }