From 79944432fbd58be01b98a574b8aa56854543e6c7 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Thu, 14 May 2026 00:52:14 +0800 Subject: [PATCH] =?UTF-8?q?MonitorPanel=20=E8=87=AA=E5=8A=A8=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E6=9C=AA=E5=8A=A0=E8=BD=BD=E5=9F=8E=E5=B8=82=E7=9A=84?= =?UTF-8?q?=20ensureCityDetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/monitoring/MonitorPanel.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/frontend/components/dashboard/monitoring/MonitorPanel.tsx b/frontend/components/dashboard/monitoring/MonitorPanel.tsx index 17eafff7..4a0c3bba 100644 --- a/frontend/components/dashboard/monitoring/MonitorPanel.tsx +++ b/frontend/components/dashboard/monitoring/MonitorPanel.tsx @@ -44,6 +44,23 @@ export default function MonitorPanel() { return localStorage.getItem("monitor_notify") !== "off"; }); + // Trigger loading for monitoring cities not yet in store + useEffect(() => { + const missing = MONITOR_KEYS.filter((k) => !details[k]); + if (missing.length === 0) return; + let cancelled = false; + async function load() { + for (const k of missing) { + if (cancelled) break; + try { + await store.ensureCityDetail(k, false, "panel"); + } catch {} + } + } + load(); + return () => { cancelled = true; }; + }, [store.ensureCityDetail, Object.keys(details).length > 0]); + const cities: MonitorCity[] = useMemo(() => { return MONITOR_KEYS.map((k) => ({ key: k, detail: details[k] })); }, [details]);