fix rendering aborted nodes in SSR (#2218)

This commit is contained in:
Evan Almloff authored and GitHub committed 2024-04-02 10:51:48 -07:00
1 parent aca38e6a34
commit 947b23bda5
4 files changed
+6 -50

No files matched your search

+4 -16
View File
@@ -1,8 +1,6 @@
use super::cache::Segment;
use crate::cache::StringCache;
use dioxus_core::RenderReturn;
use dioxus_core::Attribute;
use dioxus_core::{prelude::*, AttributeValue, DynamicNode};
use std::collections::HashMap;
use std::fmt::Write;
@@ -55,12 +53,9 @@ impl Renderer {
dom: &VirtualDom,
scope: ScopeId,
) -> std::fmt::Result {
// We should never ever run into async or errored nodes in SSR
// Error boundaries and suspense boundaries will convert these to sync
if let RenderReturn::Ready(node) = dom.get_scope(scope).unwrap().root_node() {
self.dynamic_node_id = 0;
self.render_template(buf, dom, node)?
};
let node = dom.get_scope(scope).unwrap().root_node();
self.dynamic_node_id = 0;
self.render_template(buf, dom, node)?;
Ok(())
}
@@ -122,14 +117,7 @@ impl Renderer {
} else {
let scope = node.mounted_scope(*idx, template, dom).unwrap();
let node = scope.root_node();
match node {
RenderReturn::Ready(node) => {
self.render_template(buf, dom, node)?
}
_ => todo!(
"generally, scopes should be sync, only if being traversed"
),
}
self.render_template(buf, dom, node)?
}
}
DynamicNode::Text(text) => {