fix: explicitly untrack the children of `<Show/>`

This commit is contained in:
Greg Johnston 2024-07-16 14:09:19 -04:00
parent bf8d2e079c
commit b24ae7a5e3
1 changed files with 11 additions and 4 deletions

View File

@ -3,7 +3,11 @@ use crate::{
IntoView,
};
use leptos_macro::component;
use reactive_graph::{computed::ArcMemo, traits::Get};
use reactive_graph::{
computed::ArcMemo,
traits::{GetUntracked, Track},
untrack,
};
use tachys::either::Either;
#[component]
@ -23,8 +27,11 @@ where
let memoized_when = ArcMemo::new(move |_| when());
let children = children.into_inner();
move || match memoized_when.get() {
true => Either::Left(children()),
false => Either::Right(fallback.run()),
move || {
memoized_when.track();
untrack(|| match memoized_when.get_untracked() {
true => Either::Left(children()),
false => Either::Right(fallback.run()),
})
}
}