fix: dont clone callbacks

This commit is contained in:
Jonathan Kelley 2022-12-17 01:55:18 -08:00
parent c409fecaaf
commit 3faef30075

View file

@ -210,14 +210,27 @@ impl<'b> VirtualDom {
// }
// Safety: we promise not to re-alias this text later on after committing it to the mutation
let unbounded_value = unsafe { std::mem::transmute(attribute.value.clone()) };
self.mutations.push(SetAttribute {
name: unbounded_name,
value: unbounded_value,
ns: attribute.namespace,
id,
});
match &attribute.value {
AttributeValue::Listener(_) => {
self.mutations.push(NewEventListener {
// all listeners start with "on"
name: &unbounded_name[2..],
id,
})
}
_ => {
// Safety: we promise not to re-alias this text later on after committing it to the mutation
let unbounded_value = unsafe { std::mem::transmute(attribute.value.clone()) };
self.mutations.push(SetAttribute {
name: unbounded_name,
value: unbounded_value,
ns: attribute.namespace,
id,
})
}
}
}
fn load_template_root(&mut self, template: &VNode, root_idx: usize) -> ElementId {