From 4f9b58e93b0372a93ab7abc9b83d094bb1844b4f Mon Sep 17 00:00:00 2001 From: JSR Date: Fri, 20 Mar 2026 17:13:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=BB=E9=A1=B5?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E6=93=8D=E4=BD=9C=E5=90=8E=E5=88=86=E6=95=B0?= =?UTF-8?q?=E9=97=AA=E5=9B=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Home.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/Home.tsx b/src/components/Home.tsx index 86710f7..d8964fe 100644 --- a/src/components/Home.tsx +++ b/src/components/Home.tsx @@ -99,6 +99,7 @@ export const Home: React.FC = ({ canEdit, isPortraitMode = false }) = const [quickActionStudentId, setQuickActionStudentId] = useState(null) const longPressTimerRef = useRef(null) const suppressClickRef = useRef(false) + const fetchRequestIdRef = useRef(0) const emitDataUpdated = (category: "events" | "students" | "reasons" | "all") => { window.dispatchEvent(new CustomEvent("ss:data-updated", { detail: { category } })) @@ -119,11 +120,13 @@ export const Home: React.FC = ({ canEdit, isPortraitMode = false }) = const fetchData = useCallback(async (silent = false) => { if (!(window as any).api) return + const requestId = ++fetchRequestIdRef.current if (!silent) setLoading(true) const [stuRes, reaRes] = await Promise.all([ (window as any).api.queryStudents({}), (window as any).api.queryReasons(), ]) + if (requestId !== fetchRequestIdRef.current) return if (stuRes.success) { const enrichedStudents = (stuRes.data as student[]).map((s) => ({ @@ -458,11 +461,7 @@ export const Home: React.FC = ({ canEdit, isPortraitMode = false }) = : t("home.scoreDeducted", { name: student.name, points: Math.abs(delta) }) ) setOperationVisible(false) - - setStudents((prev) => - prev.map((s) => (s.id === student.id ? { ...s, score: s.score + delta } : s)) - ) - + fetchData(true) fetchLatestEvent() emitDataUpdated("events") } else {