From bb27577278d396ead2d131e9099a970efc437ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Thu, 21 May 2026 22:46:05 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=A6=96=E5=B1=8F?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=EF=BC=8C=E5=BF=AB=E7=85=A7=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=97=B6=E8=B7=B3=E8=BF=87=E9=AA=A8=E6=9E=B6=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - isLoaded 初始值根据 localStorage 快照是否存在决定 - 后续访问直接渲染真实 DOM,无需等待 chrome.storage 异步加载 - loadInitialData 仍在后台静默执行确保数据同步 --- providers/RouterProvider.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/providers/RouterProvider.tsx b/providers/RouterProvider.tsx index 10017d2..f15ef5d 100644 --- a/providers/RouterProvider.tsx +++ b/providers/RouterProvider.tsx @@ -152,8 +152,14 @@ export function RouterProvider({ ); return mergeWithDefaults(snapshot, getDefaultPageOrder()); }); - // 加载完成标识 - const [isLoaded, setIsLoaded] = useState(false); + // 加载完成标识:如果快照数据有效,直接标记为已加载,避免首屏骨架屏 + const [isLoaded, setIsLoaded] = useState(() => { + const snapshotKey = localStorage.getItem(`snapshot/${syncKey as string}`); + const snapshotVisible = localStorage.getItem(`snapshot/${visiblePagesKey as string}`); + const snapshotOrder = localStorage.getItem(`snapshot/${pageOrderKey as string}`); + // 快照数据存在且通过校验,说明之前已加载过,可跳过骨架屏 + return !!(snapshotKey && snapshotVisible && snapshotOrder); + }); /** * 从存储中加载初始路由数据 */