mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-10 06:34:20 +00:00
fix placeholder template names
This commit is contained in:
parent
0f01f3fd84
commit
a1c68448a7
3 changed files with 17 additions and 12 deletions
|
@ -58,10 +58,7 @@ impl VirtualDom {
|
||||||
|
|
||||||
pub(crate) fn try_reclaim(&mut self, el: ElementId) -> Option<()> {
|
pub(crate) fn try_reclaim(&mut self, el: ElementId) -> Option<()> {
|
||||||
if el.0 == 0 {
|
if el.0 == 0 {
|
||||||
panic!(
|
panic!("Cannot reclaim the root element",);
|
||||||
"Cannot reclaim the root element - {:#?}",
|
|
||||||
std::backtrace::Backtrace::force_capture()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.elements.try_remove(el.0).map(|_| ())
|
self.elements.try_remove(el.0).map(|_| ())
|
||||||
|
|
|
@ -44,14 +44,9 @@ impl VNode {
|
||||||
return self.light_diff_templates(new, dom, to);
|
return self.light_diff_templates(new, dom, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy over the mount information
|
|
||||||
let mount_id = self.mount.get();
|
let mount_id = self.mount.get();
|
||||||
new.mount.set(mount_id);
|
|
||||||
|
|
||||||
let mount = &mut dom.mounts[mount_id.0];
|
self.move_mount_to(new, dom);
|
||||||
|
|
||||||
// Update the reference to the node for bubbling events
|
|
||||||
mount.node = new.clone_mounted();
|
|
||||||
|
|
||||||
// If the templates are the same, we don't need to do anything, except copy over the mount information
|
// If the templates are the same, we don't need to do anything, except copy over the mount information
|
||||||
if self == new {
|
if self == new {
|
||||||
|
@ -72,6 +67,17 @@ impl VNode {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn move_mount_to(&self, new: &VNode, dom: &mut VirtualDom) {
|
||||||
|
// Copy over the mount information
|
||||||
|
let mount_id = self.mount.get();
|
||||||
|
new.mount.set(mount_id);
|
||||||
|
|
||||||
|
let mount = &mut dom.mounts[mount_id.0];
|
||||||
|
|
||||||
|
// Update the reference to the node for bubbling events
|
||||||
|
mount.node = new.clone_mounted();
|
||||||
|
}
|
||||||
|
|
||||||
fn diff_dynamic_node(
|
fn diff_dynamic_node(
|
||||||
&self,
|
&self,
|
||||||
mount: MountId,
|
mount: MountId,
|
||||||
|
@ -481,6 +487,8 @@ impl VNode {
|
||||||
match matching_components(self, new) {
|
match matching_components(self, new) {
|
||||||
None => self.replace([new], parent, dom, to),
|
None => self.replace([new], parent, dom, to),
|
||||||
Some(components) => {
|
Some(components) => {
|
||||||
|
self.move_mount_to(new, dom);
|
||||||
|
|
||||||
for (idx, (old_component, new_component)) in components.into_iter().enumerate() {
|
for (idx, (old_component, new_component)) in components.into_iter().enumerate() {
|
||||||
let mount = &dom.mounts[mount_id.0];
|
let mount = &dom.mounts[mount_id.0];
|
||||||
let scope_id = ScopeId(mount.mounted_dynamic_nodes[idx]);
|
let scope_id = ScopeId(mount.mounted_dynamic_nodes[idx]);
|
||||||
|
|
|
@ -177,7 +177,7 @@ impl VNode {
|
||||||
dynamic_nodes: Box::new([]),
|
dynamic_nodes: Box::new([]),
|
||||||
dynamic_attrs: Box::new([]),
|
dynamic_attrs: Box::new([]),
|
||||||
template: Cell::new(Template {
|
template: Cell::new(Template {
|
||||||
name: "dioxus-empty",
|
name: "packages/core/nodes.rs:180:0:0",
|
||||||
roots: &[],
|
roots: &[],
|
||||||
node_paths: &[],
|
node_paths: &[],
|
||||||
attr_paths: &[],
|
attr_paths: &[],
|
||||||
|
@ -195,7 +195,7 @@ impl VNode {
|
||||||
dynamic_nodes: Box::new([DynamicNode::Placeholder(Default::default())]),
|
dynamic_nodes: Box::new([DynamicNode::Placeholder(Default::default())]),
|
||||||
dynamic_attrs: Box::new([]),
|
dynamic_attrs: Box::new([]),
|
||||||
template: Cell::new(Template {
|
template: Cell::new(Template {
|
||||||
name: "dioxus-placeholder",
|
name: "packages/core/nodes.rs:198:0:0",
|
||||||
roots: &[TemplateNode::Dynamic { id: 0 }],
|
roots: &[TemplateNode::Dynamic { id: 0 }],
|
||||||
node_paths: &[&[]],
|
node_paths: &[&[]],
|
||||||
attr_paths: &[],
|
attr_paths: &[],
|
||||||
|
|
Loading…
Reference in a new issue