fix: prevent flicker of top tabs on back navigation

This commit is contained in:
codytseng
2025-08-07 09:46:17 +08:00
parent 2f4f4fffcf
commit 3b3a3f41c3
2 changed files with 5 additions and 11 deletions

View File

@@ -60,7 +60,7 @@ const PrimaryPageLayout = forwardRef(
if (isSmallScreen) { if (isSmallScreen) {
return ( return (
<DeepBrowsingProvider active={current === pageName}> <DeepBrowsingProvider active={current === pageName && display}>
<div <div
ref={smallScreenScrollAreaRef} ref={smallScreenScrollAreaRef}
style={{ style={{
@@ -77,7 +77,7 @@ const PrimaryPageLayout = forwardRef(
} }
return ( return (
<DeepBrowsingProvider active={current === pageName} scrollAreaRef={scrollAreaRef}> <DeepBrowsingProvider active={current === pageName && display} scrollAreaRef={scrollAreaRef}>
<ScrollArea <ScrollArea
className="h-screen overflow-auto" className="h-screen overflow-auto"
scrollBarClassName="z-50 pt-12" scrollBarClassName="z-50 pt-12"

View File

@@ -31,7 +31,6 @@ export function DeepBrowsingProvider({
const [lastScrollTop, setLastScrollTop] = useState(lastScrollTopRef.current) const [lastScrollTop, setLastScrollTop] = useState(lastScrollTopRef.current)
useEffect(() => { useEffect(() => {
setDeepBrowsing(false)
if (!active) return if (!active) return
const handleScroll = () => { const handleScroll = () => {
@@ -51,16 +50,11 @@ export function DeepBrowsingProvider({
} }
} }
if (!scrollAreaRef) { const target = scrollAreaRef ? scrollAreaRef.current : window
window.addEventListener('scroll', handleScroll)
return () => {
window.removeEventListener('scroll', handleScroll)
}
}
scrollAreaRef.current?.addEventListener('scroll', handleScroll) target?.addEventListener('scroll', handleScroll)
return () => { return () => {
scrollAreaRef.current?.removeEventListener('scroll', handleScroll) target?.removeEventListener('scroll', handleScroll)
} }
}, [active]) }, [active])