Browse Source

wip: usecallback

Jonathan Kelley 2 năm trước cách đây
mục cha
commit
5253ce6b65
3 tập tin đã thay đổi với 21 bổ sung12 xóa
  1. 10 8
      examples/callback.rs
  2. 1 1
      examples/dog_app.rs
  3. 10 3
      packages/hooks/src/usecallback.rs

+ 10 - 8
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!" }
     })
 }

+ 1 - 1
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| {

+ 10 - 3
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)*
         )
     };
 }