Bring back mroe hooks, remove old hooks, cleanup a number of examples
This commit is contained in:
33 files changed
+179
-643
No files matched your search
+21
-31
@@ -5,15 +5,10 @@ fn main() {
|
||||
dioxus_desktop::launch(app);
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, serde::Deserialize)]
|
||||
struct ListBreeds {
|
||||
message: HashMap<String, Vec<String>>,
|
||||
}
|
||||
|
||||
fn app() -> Element {
|
||||
let breed = use_signal(|| "deerhound".to_string());
|
||||
|
||||
let breeds = use_future(|| async move {
|
||||
let breed_list = use_future(|| async move {
|
||||
reqwest::get("https://dog.ceo/api/breeds/list/all")
|
||||
.await
|
||||
.unwrap()
|
||||
@@ -21,13 +16,13 @@ fn app() -> Element {
|
||||
.await
|
||||
});
|
||||
|
||||
match breeds.value()? {
|
||||
Ok(breed_list) => rsx! {
|
||||
match breed_list.value().read().as_ref() {
|
||||
Some(Ok(breeds)) => rsx! {
|
||||
div { height: "500px",
|
||||
h1 { "Select a dog breed!" }
|
||||
div { display: "flex",
|
||||
ul { flex: "50%",
|
||||
for cur_breed in breed_list.message.keys().take(10) {
|
||||
for cur_breed in breeds.message.keys().take(10).cloned() {
|
||||
li { key: "{cur_breed}",
|
||||
button { onclick: move |_| breed.set(cur_breed.clone()), "{cur_breed}" }
|
||||
}
|
||||
@@ -37,18 +32,13 @@ fn app() -> Element {
|
||||
}
|
||||
}
|
||||
},
|
||||
Err(_e) => rsx! { div { "Error fetching breeds" } },
|
||||
_ => rsx! { div { "loading breeds" } },
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize, Debug)]
|
||||
struct DogApi {
|
||||
message: String,
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn BreedPic(breed: Signal<String>) -> Element {
|
||||
let fut = use_future(|breed| async move {
|
||||
let fut = use_future(|| async move {
|
||||
reqwest::get(format!("https://dog.ceo/api/breed/{breed}/images/random"))
|
||||
.await
|
||||
.unwrap()
|
||||
@@ -56,23 +46,23 @@ fn BreedPic(breed: Signal<String>) -> Element {
|
||||
.await
|
||||
});
|
||||
|
||||
match fut.value()? {
|
||||
Ok(resp) => render! {
|
||||
match fut.value().read().as_ref() {
|
||||
Some(Ok(resp)) => rsx! {
|
||||
div {
|
||||
button {
|
||||
onclick: move |_| {
|
||||
println!("clicked");
|
||||
fut.restart()
|
||||
},
|
||||
"Click to fetch another doggo"
|
||||
}
|
||||
img {
|
||||
src: "{resp.message}",
|
||||
max_width: "500px",
|
||||
max_height: "500px",
|
||||
}
|
||||
button { onclick: move |_| fut.restart(), "Click to fetch another doggo" }
|
||||
img { max_width: "500px", max_height: "500px", src: "{resp.message}" }
|
||||
}
|
||||
},
|
||||
Err(_) => render! { div { "loading dogs failed" } },
|
||||
_ => rsx! { div { "loading dog picture" } },
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, serde::Deserialize)]
|
||||
struct ListBreeds {
|
||||
message: HashMap<String, Vec<String>>,
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize, Debug)]
|
||||
struct DogApi {
|
||||
message: String,
|
||||
}
|
||||
Reference in new issue
Block a user