浏览代码

Don't expect all components to have a scope in ScopeArena.ensure_drop_safety

Not all components will be mounted when using a Router, so we cannot assume
all components have a scope.
Dave Rolsky 3 年之前
父节点
当前提交
9b282d877b
共有 1 个文件被更改,包括 3 次插入6 次删除
  1. 3 6
      packages/core/src/scopes.rs

+ 3 - 6
packages/core/src/scopes.rs

@@ -198,12 +198,9 @@ impl ScopeArena {
             // run the hooks (which hold an &mut Reference)
             // recursively call ensure_drop_safety on all children
             items.borrowed_props.drain(..).for_each(|comp| {
-                let scope_id = comp
-                    .scope
-                    .get()
-                    .expect("VComponents should be associated with a valid Scope");
-
-                self.ensure_drop_safety(scope_id);
+                if let Some(scope_id) = comp.scope.get() {
+                    self.ensure_drop_safety(scope_id);
+                }
 
                 drop(comp.props.take());
             });