Evan Almloff 1 年之前
父節點
當前提交
0032f7e2af
共有 2 個文件被更改,包括 4 次插入4 次删除
  1. 2 2
      packages/core/src/scope_arena.rs
  2. 2 2
      packages/core/src/virtual_dom.rs

+ 2 - 2
packages/core/src/scope_arena.rs

@@ -21,7 +21,7 @@ impl VirtualDom {
         let entry = self.scopes.vacant_entry();
         let id = ScopeId(entry.key());
 
-        let scope = entry.insert(ScopeState {
+        let scope = entry.insert(Box::new(ScopeState {
             runtime: self.runtime.clone(),
             context_id: id,
 
@@ -36,7 +36,7 @@ impl VirtualDom {
 
             borrowed_props: Default::default(),
             attributes_to_drop: Default::default(),
-        });
+        }));
 
         let context =
             ScopeContext::new(name, id, parent_id, height, self.runtime.scheduler.clone());

+ 2 - 2
packages/core/src/virtual_dom.rs

@@ -175,7 +175,7 @@ use std::{any::Any, cell::Cell, collections::BTreeSet, future::Future, rc::Rc};
 /// }
 /// ```
 pub struct VirtualDom {
-    pub(crate) scopes: Slab<ScopeState>,
+    pub(crate) scopes: Slab<Box<ScopeState>>,
 
     pub(crate) dirty_scopes: BTreeSet<DirtyScope>,
 
@@ -285,7 +285,7 @@ impl VirtualDom {
     ///
     /// This is useful for inserting or removing contexts from a scope, or rendering out its root node
     pub fn get_scope(&self, id: ScopeId) -> Option<&ScopeState> {
-        self.scopes.get(id.0)
+        self.scopes.get(id.0).map(|s| &**s)
     }
 
     /// Get the single scope at the top of the VirtualDom tree that will always be around