diff --git a/packages/native-core/src/real_dom.rs b/packages/native-core/src/real_dom.rs index c7cc4219a..99620558d 100644 --- a/packages/native-core/src/real_dom.rs +++ b/packages/native-core/src/real_dom.rs @@ -641,6 +641,9 @@ impl RealDom { fn remove(&mut self, id: GlobalNodeId) -> Option> { // We do not need to remove the node from the parent's children list for children. fn inner(dom: &mut RealDom, id: GlobalNodeId) -> Option> { + for nodes_listeners in dom.nodes_listening.values_mut() { + nodes_listeners.remove(&id); + } let mut either = match id { GlobalNodeId::VNodeId(id) => *dom.nodes[id.0].take()?, GlobalNodeId::TemplateId { @@ -683,6 +686,9 @@ impl RealDom { } } }; + for nodes_listeners in self.nodes_listening.values_mut() { + nodes_listeners.remove(&id); + } if let Some(parent) = node.parent() { let parent = &mut self[parent]; parent.remove_child(id);