allow returning values from use_eval

This commit is contained in:
Evan Almloff committed 2022-12-08 10:44:56 -06:00
1 parent 1e99e35572
commit e863ef29b8
6 files changed
+100 -13

No files matched your search

+14 -1
View File
@@ -1,4 +1,5 @@
use dioxus::prelude::*;
use dioxus_desktop::EvalResult;
fn main() {
dioxus_desktop::launch(app);
@@ -7,6 +8,15 @@ fn main() {
fn app(cx: Scope) -> Element {
let script = use_state(&cx, String::new);
let eval = dioxus_desktop::use_eval(&cx);
let future: &UseRef<Option<EvalResult>> = use_ref(&cx, || None);
if future.read().is_some() {
let future_clone = future.clone();
cx.spawn(async move {
if let Some(fut) = future_clone.with_mut(|o| o.take()) {
println!("{:?}", fut.await)
}
});
}
cx.render(rsx! {
div {
@@ -16,7 +26,10 @@ fn app(cx: Scope) -> Element {
oninput: move |e| script.set(e.value.clone()),
}
button {
onclick: move |_| eval(script),
onclick: move |_| {
let fut = eval(script);
future.set(Some(fut));
},
"Execute"
}
}