don't subscribe in tasks or event handlers

This commit is contained in:
Evan Almloff committed 2023-08-07 17:55:29 -07:00
1 parent 4447709ac8
commit 0c17bdb737
6 files changed
+35 -16

No files matched your search

+14 -11
View File
@@ -109,17 +109,20 @@ impl<T: 'static> Signal<T> {
effect_subscribers.push(effect);
}
} else if let Some(current_scope_id) = current_scope_id() {
log::trace!(
"{:?} subscribed to {:?}",
self.inner.value,
current_scope_id
);
let mut subscribers = inner.subscribers.borrow_mut();
if !subscribers.contains(&current_scope_id) {
subscribers.push(current_scope_id);
drop(subscribers);
let unsubscriber = current_unsubscriber();
inner.subscribers.borrow_mut().push(unsubscriber.scope);
// only subscribe if the vdom is rendering
if dioxus_core::vdom_is_rendering() {
log::trace!(
"{:?} subscribed to {:?}",
self.inner.value,
current_scope_id
);
let mut subscribers = inner.subscribers.borrow_mut();
if !subscribers.contains(&current_scope_id) {
subscribers.push(current_scope_id);
drop(subscribers);
let unsubscriber = current_unsubscriber();
inner.subscribers.borrow_mut().push(unsubscriber.scope);
}
}
}
Ref::map(inner, |v| &v.value)