From abd4aaac7ce23850ebf586fe9dfd12cad908b5f0 Mon Sep 17 00:00:00 2001 From: Leonmmcoset Date: Thu, 23 Oct 2025 20:35:01 +0800 Subject: [PATCH] fix anc no dialog --- src/component/Common/AnnouncementDialog.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/component/Common/AnnouncementDialog.tsx b/src/component/Common/AnnouncementDialog.tsx index a138fda..c87dc7d 100644 --- a/src/component/Common/AnnouncementDialog.tsx +++ b/src/component/Common/AnnouncementDialog.tsx @@ -31,11 +31,13 @@ const AnnouncementDialog = () => { const [lastAnnouncement, setLastAnnouncement] = useState(""); useEffect(() => { - // 检查公告是否更新,如果更新了则清除"不再显示"状态 + // 检查公告是否更新 const hasAnnouncementChanged = announcement !== lastAnnouncement && lastAnnouncement !== ""; + + // 如果公告已更新,清除不再显示状态并强制显示 if (hasAnnouncementChanged) { - // 使用set方法将其设置为null来清除不再显示状态 - SessionManager.set("announcement_dismissed", null); + // 使用特殊标记来覆盖之前的设置 + SessionManager.set("announcement_dismissed", "false"); } // 更新上次显示的公告内容 @@ -44,16 +46,17 @@ const AnnouncementDialog = () => { } // 检查是否应该显示公告 - const shouldShow = - announcementEnabled && - announcement && - announcement.trim() !== "" && - !SessionManager.get("announcement_dismissed"); + // 更健壮的检测逻辑:只有当设置为"true"时才视为不再显示 + const dismissed = SessionManager.get("announcement_dismissed") === "true"; + const shouldShow = announcementEnabled && announcement && announcement.trim() !== "" && !dismissed; if (shouldShow) { // 延迟显示,让页面加载完成 const timer = setTimeout(() => setOpen(true), 1000); return () => clearTimeout(timer); + } else { + // 确保当不应该显示时关闭弹窗 + setOpen(false); } }, [announcement, announcementEnabled, lastAnnouncement]);