Wait for the suspense boundary above the router to resolve before sending the first streaming chunk (#3891)
* Change the suspense streaming context after suspense is resolved in the router * Wait for the suspense context before streaming the first chunk in ssr * forward more response parts * warn * extract the hydration format into a crate * Fix hydration when no data is sent * forward web and server features * Fix suspense that starts on the client * fix use_server_future on the client * Add documentation for fullstack hooks and protocol * downgrade rust edition * fix clippy * fix tests * fix clippy * Fix pure web compile * undo changes to the fullstack router example * fix formatting
This commit is contained in:
1 parent
4f74ef81d1
commit
84221f55a0
45 files changed
+988
-533
No files matched your search
@@ -81,6 +81,8 @@ pub async fn run(mut virtual_dom: VirtualDom, web_config: Config) -> ! {
|
||||
if should_hydrate {
|
||||
#[cfg(feature = "hydrate")]
|
||||
{
|
||||
use dioxus_fullstack_protocol::HydrationContext;
|
||||
|
||||
websys_dom.skip_mutations = true;
|
||||
// Get the initial hydration data from the client
|
||||
#[wasm_bindgen::prelude::wasm_bindgen(inline_js = r#"
|
||||
@@ -113,12 +115,12 @@ pub async fn run(mut virtual_dom: VirtualDom, web_config: Config) -> ! {
|
||||
let debug_locations = None;
|
||||
|
||||
let server_data =
|
||||
HTMLDataCursor::from_serialized(&hydration_data, debug_types, debug_locations);
|
||||
HydrationContext::from_serialized(&hydration_data, debug_types, debug_locations);
|
||||
// If the server serialized an error into the root suspense boundary, throw it into the root scope
|
||||
if let Some(error) = server_data.error() {
|
||||
if let Some(error) = server_data.error_entry().get().ok().flatten() {
|
||||
virtual_dom.in_runtime(|| dioxus_core::ScopeId::APP.throw_error(error));
|
||||
}
|
||||
with_server_data(server_data, || {
|
||||
server_data.in_context(|| {
|
||||
virtual_dom.rebuild(&mut websys_dom);
|
||||
});
|
||||
websys_dom.skip_mutations = false;
|
||||
|
||||
Reference in new issue
Block a user