|
@@ -61,7 +61,7 @@ fn app(cx: Scope) -> Element {
|
|
|
|
|
|
#[inline_props]
|
|
#[inline_props]
|
|
fn Breed(cx: Scope, breed: String) -> Element {
|
|
fn Breed(cx: Scope, breed: String) -> Element {
|
|
- #[derive(serde::Deserialize)]
|
|
|
|
|
|
+ #[derive(serde::Deserialize, Debug)]
|
|
struct DogApi {
|
|
struct DogApi {
|
|
message: String,
|
|
message: String,
|
|
}
|
|
}
|
|
@@ -72,6 +72,12 @@ fn Breed(cx: Scope, breed: String) -> Element {
|
|
reqwest::get(endpoint).await.unwrap().json::<DogApi>().await
|
|
reqwest::get(endpoint).await.unwrap().json::<DogApi>().await
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ let breed_name = use_state(&cx, || breed.clone());
|
|
|
|
+ if breed_name.get() != breed {
|
|
|
|
+ breed_name.set(breed.clone());
|
|
|
|
+ fut.restart();
|
|
|
|
+ }
|
|
|
|
+
|
|
cx.render(match fut.value() {
|
|
cx.render(match fut.value() {
|
|
Some(Ok(resp)) => rsx! {
|
|
Some(Ok(resp)) => rsx! {
|
|
button {
|
|
button {
|