Merge pull request #1250 from Demonthos/fix-root-suspense

Fix root component suspense
This commit is contained in:
Jonathan Kelley authored and GitHub committed 2023-07-26 10:24:29 -07:00
commit 6e80f15d6a
4 files changed
+8 -21

No files matched your search

+6 -1
View File
@@ -542,7 +542,12 @@ impl VirtualDom {
}); });
} }
// If an error occurs, we should try to render the default error component and context where the error occured // If an error occurs, we should try to render the default error component and context where the error occured
RenderReturn::Aborted(_placeholder) => panic!("Cannot catch errors during rebuild"), RenderReturn::Aborted(placeholder) => {
log::info!("Ran into suspended or aborted scope during rebuild");
let id = self.next_null();
placeholder.id.set(Some(id));
self.mutations.push(Mutation::CreatePlaceholder { id });
}
} }
self.finalize() self.finalize()
@@ -16,12 +16,6 @@ struct AppProps {
} }
fn app(cx: Scope<AppProps>) -> Element { fn app(cx: Scope<AppProps>) -> Element {
render! {
Child {}
}
}
fn Child(cx: Scope) -> Element {
let state = let state =
use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value(); use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value();
@@ -52,7 +46,7 @@ fn Child(cx: Scope) -> Element {
}) })
} }
#[server(PostServerData)] #[server]
async fn post_server_data(data: String) -> Result<(), ServerFnError> { async fn post_server_data(data: String) -> Result<(), ServerFnError> {
let axum::extract::Host(host): axum::extract::Host = extract().await?; let axum::extract::Host(host): axum::extract::Host = extract().await?;
println!("Server received: {}", data); println!("Server received: {}", data);
@@ -61,7 +55,7 @@ async fn post_server_data(data: String) -> Result<(), ServerFnError> {
Ok(()) Ok(())
} }
#[server(GetServerData)] #[server]
async fn get_server_data() -> Result<String, ServerFnError> { async fn get_server_data() -> Result<String, ServerFnError> {
Ok(reqwest::get("https://httpbin.org/ip").await?.text().await?) Ok(reqwest::get("https://httpbin.org/ip").await?.text().await?)
} }
@@ -16,12 +16,6 @@ struct AppProps {
} }
fn app(cx: Scope<AppProps>) -> Element { fn app(cx: Scope<AppProps>) -> Element {
render! {
Child {}
}
}
fn Child(cx: Scope) -> Element {
let state = let state =
use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value(); use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value();
@@ -16,12 +16,6 @@ struct AppProps {
} }
fn app(cx: Scope<AppProps>) -> Element { fn app(cx: Scope<AppProps>) -> Element {
render! {
Child {}
}
}
fn Child(cx: Scope) -> Element {
let state = let state =
use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value(); use_server_future(cx, (), |()| async move { get_server_data().await.unwrap() })?.value();