Merge pull request #1250 from Demonthos/fix-root-suspense
Fix root component suspense
This commit is contained in:
4 files changed
+8
-21
No files matched your search
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user