Preserve session scroll when returning

This commit is contained in:
Shantur Rathore
2025-12-09 21:29:48 +00:00
parent 67a12d6126
commit c323667729
2 changed files with 40 additions and 9 deletions

View File

@@ -167,6 +167,18 @@ export default function VirtualItem(props: VirtualItemProps) {
return
}
const normalized = nextHeight
const previous = sizeCache.get(props.cacheKey) ?? measuredHeight()
const shouldKeepPrevious = previous > 0 && (normalized === 0 || (normalized > 0 && normalized < previous))
if (shouldKeepPrevious) {
if (!hasReportedMeasurement) {
hasReportedMeasurement = true
props.onMeasured?.()
}
setHasMeasured(true)
sizeCache.set(props.cacheKey, previous)
setMeasuredHeight(previous)
return
}
if (normalized > 0) {
sizeCache.set(props.cacheKey, normalized)
setHasMeasured(true)
@@ -262,6 +274,7 @@ export default function VirtualItem(props: VirtualItemProps) {
})
createEffect(() => {
measurementsSuspended()
const root = props.scrollContainer ? props.scrollContainer() : null
refreshIntersectionObserver(root ?? null)
})