Add lazy contexts to signals
This commit is contained in:
5 files changed
+40
-6
No files matched your search
@@ -10,16 +10,22 @@ mod rt;
|
||||
use dioxus_core::ScopeState;
|
||||
pub use rt::*;
|
||||
|
||||
use crate::rt::claim_rt;
|
||||
|
||||
pub fn use_init_signal_rt(cx: &ScopeState) {
|
||||
cx.use_hook(|| {
|
||||
let rt = crate::rt::claim_rt(cx.schedule_update_any());
|
||||
let rt = claim_rt(cx.schedule_update_any());
|
||||
cx.provide_context(rt);
|
||||
});
|
||||
}
|
||||
|
||||
pub fn use_signal<T: 'static>(cx: &ScopeState, f: impl FnOnce() -> T) -> Signal<T> {
|
||||
cx.use_hook(|| {
|
||||
let rt: &'static SignalRt = cx.consume_context().unwrap();
|
||||
let rt: &'static SignalRt = match cx.consume_context() {
|
||||
Some(rt) => rt,
|
||||
None => cx.provide_context(claim_rt(cx.schedule_update_any())),
|
||||
};
|
||||
|
||||
let id = rt.init(f());
|
||||
rt.subscribe(id, cx.scope_id());
|
||||
|
||||
|
||||
Reference in new issue
Block a user