more fullstack cleanups: loaders serialize, ServeConfig only (#4785)
* some opinionated cleanups in dioxus-server * add serialize to loader * add `result` to Resource * clippy * fix * writable memos, resources, `onmount`, `.pending`, and `.value()` on actions * fix compile issues * fix typo
This commit is contained in:
1 parent
a3e40a5ea2
commit
7102bc3b6a
33 files changed
+2085
-672
No files matched your search
@@ -105,9 +105,9 @@ fn app() -> Element {
|
||||
"Fetch User Info"
|
||||
}
|
||||
|
||||
pre { "Logged in: {login.result():?}" }
|
||||
pre { "User name: {user_name.result():?}" }
|
||||
pre { "Permissions: {permissions.result():?}" }
|
||||
pre { "Logged in: {login.value():?}" }
|
||||
pre { "User name: {user_name.value():?}" }
|
||||
pre { "Permissions: {permissions.value():?}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ fn app() -> Element {
|
||||
}
|
||||
}
|
||||
div {
|
||||
match breed.result() {
|
||||
match breed.value() {
|
||||
None => rsx! { div { "Click the button to fetch a dog!" } },
|
||||
Some(Err(_e)) => rsx! { div { "Failed to fetch a dog, please try again." } },
|
||||
Some(Ok(res)) => rsx! { img { max_width: "500px", max_height: "500px", src: "{res}" } },
|
||||
|
||||
@@ -72,12 +72,12 @@ fn main() {
|
||||
pre { "Dog data: {dog_data.value():#?}" }
|
||||
pre { "IP data: {ip_data.value():#?}" }
|
||||
pre { "Custom encoded data: {custom_data.value():#?}" }
|
||||
pre { "Error data: {error_data.result():#?}" }
|
||||
pre { "Typed error data: {typed_error_data.result():#?}" }
|
||||
pre { "HTTP 400 data: {http_error_data.result():#?}" }
|
||||
pre { "HTTP 400 (context) data: {http_error_context_data.result():#?}" }
|
||||
pre { "Dog error data: {dog_data_err.result():#?}" }
|
||||
pre { "Throws ok data: {throws_ok_data.result():#?}" }
|
||||
pre { "Error data: {error_data.value():#?}" }
|
||||
pre { "Typed error data: {typed_error_data.value():#?}" }
|
||||
pre { "HTTP 400 data: {http_error_data.value():#?}" }
|
||||
pre { "HTTP 400 (context) data: {http_error_context_data.value():#?}" }
|
||||
pre { "Dog error data: {dog_data_err.value():#?}" }
|
||||
pre { "Throws ok data: {throws_ok_data.value():#?}" }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ fn app() -> Element {
|
||||
rsx! {
|
||||
h1 { "Header Map Example" }
|
||||
button { onclick: move |_| headers.call(), "Get Headers" }
|
||||
if let Some(Ok(headers)) = headers.result() {
|
||||
if let Some(Ok(headers)) = headers.value() {
|
||||
p { "Response from server:" }
|
||||
pre { "{headers}" }
|
||||
} else {
|
||||
|
||||
@@ -38,7 +38,7 @@ fn app() -> Element {
|
||||
div { style: "margin: 1rem 0;",
|
||||
h2 { "Server Greeting" }
|
||||
button { onclick: move |_| message.call("World".to_string(), 30), "Get Server Greeting" }
|
||||
if message.is_pending() {
|
||||
if message.pending() {
|
||||
p { "Loading..." }
|
||||
}
|
||||
p { "{message:#?}" }
|
||||
|
||||
@@ -34,7 +34,7 @@ fn app() -> Element {
|
||||
},
|
||||
"Get Sensitive Data",
|
||||
}
|
||||
pre { "Response from locked API: {fetch_sensitive.result():?}"}
|
||||
pre { "Response from locked API: {fetch_sensitive.value():?}"}
|
||||
form {
|
||||
onsubmit: move |evt: FormEvent| async move {
|
||||
// Prevent the browser from navigating away.
|
||||
|
||||
@@ -37,7 +37,7 @@ fn app() -> Element {
|
||||
rsx! {
|
||||
h1 { "Fullstack Middleware Example" }
|
||||
button { onclick: move |_| per_route.call(), "Fetch Data" }
|
||||
pre { "{per_route.result():#?}" }
|
||||
pre { "{per_route.value():#?}" }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,13 +174,13 @@ fn app() -> Element {
|
||||
"Clear results"
|
||||
}
|
||||
|
||||
pre { "Echo result: {echo_action.result():#?}" }
|
||||
pre { "Chat result: {chat_action.result():#?}" }
|
||||
pre { "Dog data: {dog_data.result():#?}" }
|
||||
pre { "Custom data: {custom_data.result():#?}" }
|
||||
pre { "Anonymous: {anonymous_action.result():#?}" }
|
||||
pre { "Custom anonymous: {custom_anonymous_action.result():#?}" }
|
||||
pre { "Custom response: {custom_response_action.result():#?}" }
|
||||
pre { "Echo result: {echo_action.value():#?}" }
|
||||
pre { "Chat result: {chat_action.value():#?}" }
|
||||
pre { "Dog data: {dog_data.value():#?}" }
|
||||
pre { "Custom data: {custom_data.value():#?}" }
|
||||
pre { "Anonymous: {anonymous_action.value():#?}" }
|
||||
pre { "Custom anonymous: {custom_anonymous_action.value():#?}" }
|
||||
pre { "Custom response: {custom_response_action.value():#?}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,13 +108,13 @@ fn app() -> Element {
|
||||
rsx! {
|
||||
div {
|
||||
button { onclick: move |_| users.call(), "Get Users" }
|
||||
pre { "{users.result():?}" }
|
||||
pre { "{users.value():?}" }
|
||||
button { onclick: move |_| messages.call(), "Get Messages" }
|
||||
pre { "{messages.result():?}" }
|
||||
pre { "{messages.value():?}" }
|
||||
button { onclick: move |_| broadcast.call(), "Broadcast Message" }
|
||||
pre { "{broadcast.result():?}" }
|
||||
pre { "{broadcast.value():?}" }
|
||||
button { onclick: move |_| add.call(), "Add Message" }
|
||||
pre { "{add.result():?}" }
|
||||
pre { "{add.value():?}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,12 +36,12 @@ fn Home() -> Element {
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn Post(id: u32) -> Element {
|
||||
fn Post(id: ReadSignal<u32>) -> Element {
|
||||
// You can return `HttpError` to return a specific HTTP status code and message.
|
||||
// `404 Not Found` will cause the server to return a 404 status code.
|
||||
//
|
||||
// `use_loader` will suspend the server-side rendering until the future resolves.
|
||||
let post_data = use_loader(move || get_post(id))?;
|
||||
let post_data = use_loader(move || get_post(id()))?;
|
||||
|
||||
rsx! {
|
||||
h1 { "Post {id}" }
|
||||
|
||||
@@ -80,7 +80,7 @@ fn app() -> Element {
|
||||
},
|
||||
"Drop files here"
|
||||
}
|
||||
pre { "{upload_as_file_upload.result():?}" }
|
||||
pre { "{upload_as_file_upload.value():?}" }
|
||||
}
|
||||
|
||||
div {
|
||||
@@ -99,9 +99,9 @@ fn app() -> Element {
|
||||
div {
|
||||
h3 { "Download a file from the server" }
|
||||
button { onclick: move |_| download_file.call(), "Download file" }
|
||||
if let Some(Ok(content)) = &download_file.result() {
|
||||
if let Some(Ok(content)) = &download_file.value() {
|
||||
pre { "{content}" }
|
||||
} else if let Some(Err(e)) = &download_file.result() {
|
||||
} else if let Some(Err(e)) = &download_file.value() {
|
||||
pre { "Error downloading file: {e}" }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user