feat: 实现基础滚动位置恢复功能

1. 新增 useScrollRestoration hook 用于在布局组件挂载时恢复滚动位置
2. 新增 scrollRestore 工具模块实现基于 sessionStorage 的滚动位置保存与恢复
3. 在 MainLayout 和 AdminLayout 中接入滚动恢复hook
4. 在应用入口初始化全局滚动保存监听
This commit is contained in:
2026-08-07 21:46:58 +08:00
parent 383440ed5b
commit 4042395e3e
7 changed files with 521 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ import BackToTop from '../components/BackToTop';
import { loginPath } from '../utils/authRedirect';
import { useSiteBranding } from '../hooks/useSiteBranding';
import { useNoIndexSEO } from '../hooks/usePageSEO';
import { useScrollRestoration } from '../hooks/useScrollRestoration';
import SiteBrandMark from '../components/SiteBrandMark';
import { api } from '../api/client';
@@ -80,6 +81,7 @@ export default function AdminLayout() {
const { theme, toggle } = useTheme();
const { branding } = useSiteBranding();
useNoIndexSEO('管理后台');
useScrollRestoration();
const isNarrow = useMediaQuery('(max-width: 768px)');
const [navOpen, setNavOpen] = useState(false);
const [pending, setPending] = useState<PendingCounts>({ posts: 0, comments: 0, reports: 0 });