Bladeren bron

Add toggle

Jonathan Kelley 1 jaar geleden
bovenliggende
commit
7e2164d6d6
2 gewijzigde bestanden met toevoegingen van 8 en 1 verwijderingen
  1. 1 1
      examples/signals.rs
  2. 7 0
      packages/signals/src/signal.rs

+ 1 - 1
examples/signals.rs

@@ -23,7 +23,7 @@ fn app(cx: Scope) -> Element {
         h1 { "High-Five counter: {count}" }
         button { onclick: move |_| count += 1, "Up high!" }
         button { onclick: move |_| count -= 1, "Down low!" }
-        button { onclick: move |_| running.set(!running.value()), "Toggle counter" }
+        button { onclick: move |_| running.toggle(), "Toggle counter" }
         button { onclick: move |_| saved_values.push(count.value()), "Save this value" }
 
         // We can do boolean operations on the current signal value

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

@@ -262,6 +262,13 @@ impl<T: Clone + 'static> Signal<T> {
     }
 }
 
+impl Signal<bool> {
+    /// Invert the boolean value of the signal. This will trigger an update on all subscribers.
+    pub fn toggle(&self) {
+        self.set(!self.value());
+    }
+}
+
 impl<T: 'static> PartialEq for Signal<T> {
     fn eq(&self, other: &Self) -> bool {
         self.inner == other.inner