From c6bdb5db76629e7fae77c110a21509d07ece2e89 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 16 Feb 2022 14:08:57 -0500 Subject: [PATCH] fix: login form --- examples/login_form.rs | 68 +++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 44 deletions(-) diff --git a/examples/login_form.rs b/examples/login_form.rs index fdd1843ce..62c6f982b 100644 --- a/examples/login_form.rs +++ b/examples/login_form.rs @@ -3,14 +3,14 @@ use dioxus::events::*; use dioxus::prelude::*; -use dioxus::router::{Link, Router, Route, RouterService}; +use dioxus::router::{Link, Route, Router, RouterService}; fn main() { dioxus::desktop::launch(APP); } static APP: Component = |cx| { - cx.render(rsx!{ + cx.render(rsx! { Router { Route { to: "/", home() } Route { to: "/login", login() } @@ -25,65 +25,45 @@ fn home(cx: Scope) -> Element { }) } - fn login(cx: Scope) -> Element { - let username = use_state(&cx, String::new); - let password = use_state(&cx, String::new); - let service = cx.consume_context::()?; - let onsubmit = move |_| { - cx.push_future({ - let (username, password) = (username.get().clone(), password.get().clone()); - let service = service.clone(); + let onsubmit = move |evt: FormEvent| { + to_owned![service]; + let username = evt.values["username"].clone(); + let password = evt.values["password"].clone(); - async move { - let params = [ - ("username", username.to_string()), - ("password", password.to_string()) - ]; + cx.spawn(async move { + let resp = reqwest::Client::new() + .post("http://localhost/login") + .form(&[("username", username), ("password", password)]) + .send() + .await; - let resp = reqwest::Client::new() - .post("http://localhost/login") - .form(¶ms) - .send() - .await; + match resp { + // Parse data from here, such as storing a response token + Ok(data) => service.push_route("/"), - match resp { - Ok(data) => { - // Parse data from here, such as storing a response token - service.push_route("/"); - } - Err(err) => {} //Handle any errors from the fetch here - } + //Handle any errors from the fetch here + Err(err) => {} } }); }; - cx.render(rsx!{ + cx.render(rsx! { h1 { "Login" } form { onsubmit: onsubmit, - // Prevent the default behavior of
to post - prevent_default: "onsubmit", - input { - oninput: move |evt| username.set(evt.value.clone()) - } - label { - "Username" - } + prevent_default: "onsubmit", // Prevent the default behavior of to post + input { r#type: "text" } + label { "Username" } br {} - input { - oninput: move |evt| password.set(evt.value.clone()), - r#type: "password" - } + input { r#type: "password" } label { "Password" } br {} - button { - "Login" - } + button { "Login" } } }) -} \ No newline at end of file +}