fix: scope back-to-top to browse, speed up reveal, reset scroll on sort change
- BackToTop now only mounts on the /browse feed (covers all / latest / popular / search) instead of every route. - Reveal animation duration cut 0.4s -> 0.25s so scrolled-in content appears faster. - ScrollToTop also watches `search`, so switching between sort views on the same /browse path (e.g. 全部资料 <-> 热门资料) returns to the top. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,12 +11,12 @@ import { useLocation } from "react-router-dom";
|
|||||||
* anchor / deep-link targets keep their own scroll handling.
|
* anchor / deep-link targets keep their own scroll handling.
|
||||||
*/
|
*/
|
||||||
export function ScrollToTop() {
|
export function ScrollToTop() {
|
||||||
const { pathname, hash } = useLocation();
|
const { pathname, search, hash } = useLocation();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (hash) return;
|
if (hash) return;
|
||||||
window.scrollTo({ top: 0, left: 0 });
|
window.scrollTo({ top: 0, left: 0 });
|
||||||
}, [pathname, hash]);
|
}, [pathname, search, hash]);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -669,7 +669,7 @@ export function PublicLayout() {
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<BackToTop />
|
{pathname === "/browse" ? <BackToTop /> : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export const EASE_OUT = [0.22, 1, 0.36, 1] as const;
|
|||||||
|
|
||||||
/** Base transition for reveal-style animations. */
|
/** Base transition for reveal-style animations. */
|
||||||
export const baseTransition: Transition = {
|
export const baseTransition: Transition = {
|
||||||
duration: 0.4,
|
duration: 0.25,
|
||||||
ease: EASE_OUT,
|
ease: EASE_OUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user