Browse Source

Fix effect by using a set_inner

Jonathan Kelley 1 năm trước cách đây
mục cha
commit
d092f7f19f

+ 4 - 0
examples/clock.rs

@@ -14,6 +14,10 @@ fn app() -> Element {
         }
     });
 
+    use_effect(move || {
+        println!("High-Five counter: {}", count());
+    });
+
     rsx! {
         div { "High-Five counter: {count}" }
     }

+ 1 - 1
packages/signals/examples/split_subscriptions.rs

@@ -87,7 +87,7 @@ fn ReadsManySignals() -> Element {
             },
             "Increase First Item"
         }
-        for signal in data.many_signals {
+        for signal in data.many_signals.iter() {
             Child { count: *signal }
         }
     }

+ 1 - 1
packages/signals/src/effect.rs

@@ -98,7 +98,7 @@ impl EffectInner {
             callback: Box::new(callback),
             id: copy.id(),
         };
-        copy.set(inner);
+        copy.set_inner(inner);
         copy
     }
 }

+ 5 - 0
packages/signals/src/rt.rs

@@ -146,6 +146,11 @@ impl<T: 'static, S: Storage<T>> CopyValue<T, S> {
     pub fn id(&self) -> GenerationalBoxId {
         self.value.id()
     }
+
+    /// Set the inner value directory without going `Write`
+    pub fn set_inner(&self, value: T) {
+        self.value.set(value);
+    }
 }
 
 impl<T: 'static, S: Storage<T>> Readable<T> for CopyValue<T, S> {