fix: prevent flicker of top tabs on back navigation
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user