Bladeren bron

Merge pull request #1384 from ealmloff/new-in-scope-signals

Expose new_in_scope for signals
Jonathan Kelley 1 jaar geleden
bovenliggende
commit
1ba6ca39e3
1 gewijzigde bestanden met toevoegingen van 15 en 0 verwijderingen
  1. 15 0
      packages/signals/src/signal.rs

+ 15 - 0
packages/signals/src/signal.rs

@@ -145,6 +145,21 @@ impl<T: 'static> Signal<T> {
         }
     }
 
+    /// Create a new signal with a custom owner scope. The signal will be dropped when the owner scope is dropped instead of the current scope.
+    pub fn new_in_scope(value: T, owner: ScopeId) -> Self {
+        Self {
+            inner: CopyValue::new_in_scope(
+                SignalData {
+                    subscribers: Default::default(),
+                    effect_subscribers: Default::default(),
+                    update_any: schedule_update_any().expect("in a virtual dom"),
+                    value,
+                },
+                owner,
+            ),
+        }
+    }
+
     /// Get the scope the signal was created in.
     pub fn origin_scope(&self) -> ScopeId {
         self.inner.origin_scope()