Merge branch 'maybe-sync-signal' into breaking

This commit is contained in:
Evan Almloff committed 2024-01-16 13:49:53 -06:00
commit 611f0d3b5f
25 files changed
+2085 -694

No files matched your search

+5 -5
View File
@@ -6,8 +6,8 @@ use dioxus::prelude::*;
use dioxus_core::ElementId;
use dioxus_signals::*;
#[test]
fn effects_rerun() {
#[tokio::test]
async fn effects_rerun() {
simple_logger::SimpleLogger::new().init().unwrap();
#[derive(Default)]
@@ -32,14 +32,14 @@ fn effects_rerun() {
});
signal += 1;
rsx! {
div {}
}
rsx! { div {} }
},
counter.clone(),
);
let _ = dom.rebuild().santize();
dom.render_with_deadline(tokio::time::sleep(std::time::Duration::from_millis(100)))
.await;
let current_counter = counter.borrow();
assert_eq!(current_counter.component, 1);
+29
View File
@@ -0,0 +1,29 @@
#![allow(unused, non_upper_case_globals, non_snake_case)]
use dioxus::prelude::*;
use dioxus_core::ElementId;
use dioxus_signals::*;
#[test]
fn create_signals_global() {
let mut dom = VirtualDom::new(|cx| {
render! {
for _ in 0..10 {
Child {}
}
}
});
fn Child(cx: Scope) -> Element {
let signal = create_without_cx();
let mapped = MappedSignal::new(signal, |v| v.as_bytes());
render! { "{signal:?}", "{mapped:?}" }
}
let _edits = dom.rebuild().santize();
fn create_without_cx() -> Signal<String> {
Signal::new("hello world".to_string())
}
}
+17 -16
View File
@@ -32,26 +32,33 @@ fn memos_rerun() {
signal.cloned()
})
});
assert_eq!(memo.value(), 0);
let generation = use_signal(cx, || cx.generation());
generation.set(cx.generation());
dioxus_signals::use_effect(cx, move || {
if generation == 1 {
assert_eq!(memo.value(), 0);
}
if generation == 3 {
assert_eq!(memo.value(), 1);
}
});
signal += 1;
assert_eq!(memo.value(), 1);
rsx! {
div {}
}
rsx! { div {} }
},
counter.clone(),
);
let _ = dom.rebuild().santize();
let _ = dom.render_immediate();
let current_counter = counter.borrow();
assert_eq!(current_counter.component, 1);
assert_eq!(current_counter.effect, 2);
}
#[test]
fn memos_prevents_component_rerun() {
#[tokio::test]
async fn memos_prevents_component_rerun() {
let _ = simple_logger::SimpleLogger::new().init();
#[derive(Default)]
@@ -73,12 +80,7 @@ fn memos_prevents_component_rerun() {
*signal.write() = 1;
}
rsx! {
Child {
signal: signal,
counter: cx.props.clone(),
}
}
rsx! { Child { signal: signal, counter: cx.props.clone() } }
},
counter.clone(),
);
@@ -118,14 +120,13 @@ fn memos_prevents_component_rerun() {
_ => panic!("Unexpected generation"),
}
rsx! {
div {}
}
rsx! { div {} }
}
let _ = dom.rebuild().santize();
dom.mark_dirty(ScopeId::ROOT);
dom.render_immediate();
dom.render_immediate();
{
let current_counter = counter.borrow();