diff --git a/examples/signals.rs b/examples/signals.rs index 60c9af126..c16bfe927 100644 --- a/examples/signals.rs +++ b/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 diff --git a/packages/signals/src/signal.rs b/packages/signals/src/signal.rs index c1ae076d9..3a0ad407d 100644 --- a/packages/signals/src/signal.rs +++ b/packages/signals/src/signal.rs @@ -262,6 +262,13 @@ impl Signal { } } +impl Signal { + /// Invert the boolean value of the signal. This will trigger an update on all subscribers. + pub fn toggle(&self) { + self.set(!self.value()); + } +} + impl PartialEq for Signal { fn eq(&self, other: &Self) -> bool { self.inner == other.inner