fix diffing components

This commit is contained in:
Evan Almloff committed 2024-01-09 11:50:41 -06:00
1 parent 3545c14a38
commit b2860a3d73
2 files changed
+8 -8

No files matched your search

+5 -2
View File
@@ -122,8 +122,8 @@ impl VNode {
pub(super) fn create_component_node(
&self,
_mount: MountId,
_idx: usize,
mount: MountId,
idx: usize,
component: &VComponent,
parent: Option<ElementRef>,
dom: &mut VirtualDom,
@@ -135,6 +135,9 @@ impl VNode {
.context()
.id;
// Store the scope id for the next render
dom.mounts[mount.0].mounted_dynamic_nodes[idx] = scope.0;
let new = dom.run_scope(scope);
dom.create_scope(to, scope, &new, parent)
+3 -6
View File
@@ -34,9 +34,8 @@ impl VirtualDom {
pub(crate) fn run_scope(&mut self, scope_id: ScopeId) -> RenderReturn {
self.runtime.scope_stack.borrow_mut().push(scope_id);
let scope = &self.scopes[scope_id.0];
let new_nodes = {
let scope = &self.scopes[scope_id.0];
let context = scope.context();
context.suspended.set(false);
context.hook_index.set(0);
@@ -44,12 +43,10 @@ impl VirtualDom {
// safety: due to how we traverse the tree, we know that the scope is not currently aliased
let props: &dyn AnyProps = &*scope.props;
let _span = tracing::trace_span!("render", scope = %scope.context().name);
props.render()
let span = tracing::trace_span!("render", scope = %scope.context().name);
span.in_scope(|| props.render())
};
let scope = &mut self.scopes[scope_id.0];
let context = scope.context();
// And move the render generation forward by one