fix the context API
This commit is contained in:
1 parent
2b6b3b67b1
commit
0be5dbe715
2 files changed
+8
-7
No files matched your search
@@ -65,8 +65,11 @@ impl<'b> VirtualDom {
|
|||||||
/// Create a new template [`VNode`] and write it to the [`Mutations`] buffer.
|
/// Create a new template [`VNode`] and write it to the [`Mutations`] buffer.
|
||||||
///
|
///
|
||||||
/// This method pushes the ScopeID to the internal scopestack and returns the number of nodes created.
|
/// This method pushes the ScopeID to the internal scopestack and returns the number of nodes created.
|
||||||
pub(crate) fn create_scope(&mut self, _scope: ScopeId, template: &'b VNode<'b>) -> usize {
|
pub(crate) fn create_scope(&mut self, scope: ScopeId, template: &'b VNode<'b>) -> usize {
|
||||||
self.create(template)
|
self.runtime.scope_stack.borrow_mut().push(scope);
|
||||||
|
let nodes = self.create(template);
|
||||||
|
self.runtime.scope_stack.borrow_mut().pop();
|
||||||
|
nodes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create this template and write its mutations
|
/// Create this template and write its mutations
|
||||||
|
|||||||
@@ -115,21 +115,19 @@ impl ScopeContext {
|
|||||||
|
|
||||||
let mut search_parent = self.parent_id;
|
let mut search_parent = self.parent_id;
|
||||||
with_runtime(|runtime| {
|
with_runtime(|runtime| {
|
||||||
let mut result = None;
|
|
||||||
while let Some(parent_id) = search_parent {
|
while let Some(parent_id) = search_parent {
|
||||||
let parent = runtime.get_context(parent_id).unwrap();
|
let parent = runtime.get_context(parent_id).unwrap();
|
||||||
if let Some(shared) = parent
|
if let Some(shared) = parent
|
||||||
.shared_contexts
|
.shared_contexts
|
||||||
.borrow()
|
.borrow()
|
||||||
.iter()
|
.iter()
|
||||||
.find(|(k, _)| *k == TypeId::of::<T>())
|
.find_map(|(_, any)| any.downcast_ref::<T>())
|
||||||
{
|
{
|
||||||
result = shared.1.downcast_ref::<T>().cloned();
|
return Some(shared.clone());
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
search_parent = parent.parent_id;
|
search_parent = parent.parent_id;
|
||||||
}
|
}
|
||||||
result
|
None
|
||||||
})
|
})
|
||||||
.flatten()
|
.flatten()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user