#![allow(non_snake_case)] use dioxus::prelude::*; fn main() { dioxus_desktop::launch(App); } pub fn App(cx: Scope) -> Element { let is_logged_in = use_state(cx, || false); cx.render(rsx!(LogIn { is_logged_in: **is_logged_in, on_log_in: |_| is_logged_in.set(true), on_log_out: |_| is_logged_in.set(false), })) } #[inline_props] fn LogIn<'a>( cx: Scope<'a>, is_logged_in: bool, on_log_in: EventHandler<'a>, on_log_out: EventHandler<'a>, ) -> Element<'a> { // ANCHOR: if_else if *is_logged_in { cx.render(rsx! { div { "Welcome!", button { onclick: move |_| on_log_out.call(()), "Log Out", } } }) } else { cx.render(rsx! { button { onclick: move |_| on_log_in.call(()), "Log In", } }) } // ANCHOR_END: if_else } #[inline_props] fn LogInWarning(cx: Scope, is_logged_in: bool) -> Element { // ANCHOR: conditional_none if *is_logged_in { return None; } cx.render(rsx! { a { "You must be logged in to comment" } }) // ANCHOR_END: conditional_none }