From 59748c7b7f1b303a28ed44fe0e248e32c82c1f02 Mon Sep 17 00:00:00 2001 From: linkeyu <798648091@qq.com> Date: Wed, 22 Jul 2026 09:49:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E9=81=BF=E5=85=8D=E5=BE=BD?= =?UTF-8?q?=E6=A0=87=E5=88=B7=E6=96=B0=E5=93=8D=E5=BA=94=E4=B9=B1=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(main)/layout.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 220c923..609375c 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { usePathname, useRouter } from 'next/navigation'; import { BarChartOutlined, @@ -106,6 +106,7 @@ export default function MainLayout({ children }: { children: React.ReactNode }) const [admin, setAdmin] = useState(null); const [collapsed, setCollapsed] = useState(false); const [pendingReviewCounts, setPendingReviewCounts] = useState>>({}); + const reviewRefreshVersion = useRef>>({}); useEffect(() => { const token = getToken(); @@ -131,6 +132,8 @@ export default function MainLayout({ children }: { children: React.ReactNode }) const refresh = async (key: ReviewBadgeKey) => { if (!canAccess(key.slice(1))) return; + const version = (reviewRefreshVersion.current[key] ?? 0) + 1; + reviewRefreshVersion.current[key] = version; let count: number; if (key === '/withdraws') { count = (await api.get('/admin/api/withdraws/summary')).data.reviewing_count; @@ -139,6 +142,7 @@ export default function MainLayout({ children }: { children: React.ReactNode }) } else { count = (await api.get('/admin/api/feedbacks/summary')).data.pending; } + if (reviewRefreshVersion.current[key] !== version) return; setPendingReviewCounts((current) => ({ ...current, [key]: count })); };