From 10a1c46a49458db192410118394ee74e741c73e0 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 3 Apr 2023 12:45:01 -0500 Subject: [PATCH] make server crate example more compelling --- packages/server/src/lib.rs | 40 +++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/packages/server/src/lib.rs b/packages/server/src/lib.rs index 9654adebe..7ef232c23 100644 --- a/packages/server/src/lib.rs +++ b/packages/server/src/lib.rs @@ -6,6 +6,7 @@ //! - Instant RSX Hot reloading with [`dioxus-hot-reload`](https://crates.io/crates/dioxus-hot-reload). //! //! # Example +//! Full stack Dioxus in under 50 lines of code //! ```rust //! #![allow(non_snake_case)] //! use dioxus::prelude::*; @@ -13,50 +14,45 @@ //! //! fn main() { //! #[cfg(feature = "web")] -//! // Hydrate the application on the client //! dioxus_web::launch_cfg(app, dioxus_web::Config::new().hydrate(true)); //! #[cfg(feature = "ssr")] //! { -//! GetServerData::register().unwrap(); +//! GetMeaning::register().unwrap(); //! tokio::runtime::Runtime::new() //! .unwrap() //! .block_on(async move { -//! let addr = std::net::SocketAddr::from(([127, 0, 0, 1], 8080)); -//! axum::Server::bind(&addr) -//! .serve( -//! axum::Router::new() -//! // Server side render the application, serve static assets, and register server functions -//! .serve_dioxus_application("", ServeConfigBuilder::new(app, ())) -//! .into_make_service(), -//! ) -//! .await -//! .unwrap(); +//! warp::serve(serve_dioxus_application( +//! "", +//! ServeConfigBuilder::new(app, ()), +//! )) +//! .run(([127, 0, 0, 1], 8080)) +//! .await; //! }); -//! } +//! } //! } //! //! fn app(cx: Scope) -> Element { -//! let text = use_state(cx, || "...".to_string()); -//! +//! let meaning = use_state(cx, || None); //! cx.render(rsx! { //! button { //! onclick: move |_| { -//! to_owned![text]; +//! to_owned![meaning]; //! async move { -//! if let Ok(data) = get_server_data().await { -//! text.set(data.clone()); +//! if let Ok(data) = get_meaning("life the universe and everything".into()).await { +//! meaning.set(data); //! } //! } //! }, //! "Run a server function" //! } -//! "Server said: {text}" +//! "Server said: {meaning:?}" //! }) //! } //! -//! #[server(GetServerData)] -//! async fn get_server_data() -> Result { -//! Ok("Hello from the server!".to_string()) +//! // This code will only run on the server +//! #[server(GetMeaning)] +//! async fn get_meaning(of: String) -> Result, ServerFnError> { +//! Ok(of.contains("life").then(|| 42)) //! } //! ```