1
0
Evan Almloff 1 жил өмнө
parent
commit
b2860a3d73

+ 5 - 2
packages/core/src/diff/component.rs

@@ -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
packages/core/src/scope_arena.rs

@@ -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