From 5253ce6b65bffdacf94164d04faa45f36814494f Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sat, 19 Nov 2022 13:43:19 -0800 Subject: [PATCH] wip: usecallback --- examples/callback.rs | 18 ++++++++++-------- examples/dog_app.rs | 2 +- packages/hooks/src/usecallback.rs | 13 ++++++++++--- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/examples/callback.rs b/examples/callback.rs index f208bbcd7..e7930ef34 100644 --- a/examples/callback.rs +++ b/examples/callback.rs @@ -1,5 +1,3 @@ -use std::rc::Rc; - use dioxus::prelude::*; fn main() { @@ -7,14 +5,18 @@ fn main() { } fn app(cx: Scope) -> Element { - let login = use_callback!(cx, || |evt| async { - // + let login = use_callback!(cx, || move |evt: MouseEvent| async move { + let res = reqwest::get("https://dog.ceo/api/breeds/list/all") + .await + .unwrap() + .text() + .await + .unwrap(); + + println!("{}, ", res); }); cx.render(rsx! { - button { - onclick: login, - "Click me!" - } + button { onclick: login, "Click me!" } }) } diff --git a/examples/dog_app.rs b/examples/dog_app.rs index 2b42a20fb..d5440d9ad 100644 --- a/examples/dog_app.rs +++ b/examples/dog_app.rs @@ -1,5 +1,5 @@ use dioxus::prelude::*; -use std::{collections::HashMap, marker::PhantomData}; +use std::collections::HashMap; fn main() { dioxus_desktop::launch(|cx| { diff --git a/packages/hooks/src/usecallback.rs b/packages/hooks/src/usecallback.rs index b46981879..aaa7432cf 100644 --- a/packages/hooks/src/usecallback.rs +++ b/packages/hooks/src/usecallback.rs @@ -5,11 +5,18 @@ use std::future::Future; #[macro_export] macro_rules! use_callback { - ($cx:ident, || || $($rest:tt)*) => { use_callback( $cx, (), |_| $($rest)* ) }; - ($cx:ident, || |$myarg:ident| $($rest:tt)*) => { + // ($cx:ident, || || $($rest:tt)*) => { use_callback( $cx, (), |_| $($rest)* ) }; + // ($cx:ident, || || $($rest:tt)*) => { use_callback( $cx, (), |_| $($rest)* ) }; + ($cx:ident, || $($rest:tt)*) => { use_callback( $cx, - || |$myarg| async {} + move || $($rest)* + ) + }; + ($cx:ident, |$($args:tt),* | $($rest:tt)*) => { + use_callback( + $cx, + move || $($rest)* ) }; }