Merge branch 'maybe-sync-signal' into breaking
This commit is contained in:
commit
611f0d3b5f
25 files changed
+2085
-694
No files matched your search
@@ -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);
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user