fix(hosts): switch hosts resource to LocalResource to fix hydration warning
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -287,12 +287,12 @@ fn PaginationBar(
|
||||
|
||||
#[component]
|
||||
fn HostTable(
|
||||
hosts: Resource<Result<HostsPageData, ServerFnError>>,
|
||||
hosts: LocalResource<Result<HostsPageData, ServerFnError>>,
|
||||
pending_delete: RwSignal<Option<(i64, String)>>,
|
||||
) -> impl IntoView {
|
||||
view! {
|
||||
<Suspense fallback=|| view! { <p class="empty">"Loading hosts…"</p> }>
|
||||
{move || hosts.get().map(|result| match result {
|
||||
{move || hosts.get().map(|r| match (*r).clone() {
|
||||
Err(e) => view! {
|
||||
<p class="error">"Could not load hosts: " {e.to_string()}</p>
|
||||
}.into_any(),
|
||||
@@ -380,28 +380,30 @@ pub fn HostsPage() -> impl IntoView {
|
||||
let page = RwSignal::new(1i64);
|
||||
let per_page = RwSignal::new(15i64);
|
||||
|
||||
let hosts = Resource::new(
|
||||
move || (
|
||||
// LocalResource avoids reading a resource outside <Suspense> during hydration.
|
||||
// All dependencies (filters, pagination, action versions) are client-side only,
|
||||
// so there is no benefit to SSR for this resource.
|
||||
let hosts = LocalResource::new(move || {
|
||||
let _ = create_action.version().get();
|
||||
let _ = delete_action.version().get();
|
||||
get_hosts_page(
|
||||
name_filter.get(),
|
||||
network_id_filter.get(),
|
||||
port_filter.get(),
|
||||
app_id_filter.get(),
|
||||
page.get(),
|
||||
per_page.get(),
|
||||
create_action.version().get(),
|
||||
delete_action.version().get(),
|
||||
),
|
||||
|(name, net, port, app, p, pp, _, _)| get_hosts_page(name, net, port, app, p, pp),
|
||||
);
|
||||
)
|
||||
});
|
||||
|
||||
let networks_res = LocalResource::new(|| get_networks());
|
||||
let applications_res = LocalResource::new(|| get_applications());
|
||||
|
||||
let total_pages = Signal::derive(move || {
|
||||
hosts.get().and_then(|r| r.ok()).map(|p| p.total_pages).unwrap_or(1)
|
||||
hosts.get().and_then(|r| (*r).clone().ok()).map(|p| p.total_pages).unwrap_or(1)
|
||||
});
|
||||
let total = Signal::derive(move || {
|
||||
hosts.get().and_then(|r| r.ok()).map(|p| p.total).unwrap_or(0)
|
||||
hosts.get().and_then(|r| (*r).clone().ok()).map(|p| p.total).unwrap_or(0)
|
||||
});
|
||||
|
||||
view! {
|
||||
|
||||
Reference in New Issue
Block a user