From 90b996c8da1c6d2d8538a3ca04ca9ecb6fb630d6 Mon Sep 17 00:00:00 2001 From: gujiangjiang Date: Fri, 17 Oct 2025 05:43:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=BB=8E?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E8=AF=A6=E6=83=85=E9=A1=B5=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=AF=86=E7=A0=81=E5=9B=BE=E6=A0=87=E6=B6=88?= =?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/Home.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index 94aa795..ef34705 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -108,19 +108,20 @@ export function Home() { // feat(fix): 使用useEffect来检测新邮件、显示密码通知,并控制“查看密码”按钮的可见性 const prevEmailsLength = useRef(emails.length); useEffect(() => { - // 检查邮箱列表是否从空变为非空,且尚未标记为“已接收邮件” - if (prevEmailsLength.current === 0 && emails.length > 0 && !hasReceivedEmail) { - setHasReceivedEmail(true); // 标记此邮箱地址已收到过邮件 + // 修复:只要邮件列表不为空,就确保 hasReceivedEmail 状态为 true。 + // 这修复了从其他页面导航回来时,因组件重新挂载导致状态重置、图标不显示的问题。 + if (emails.length > 0 && !hasReceivedEmail) { + setHasReceivedEmail(true); } - // 当用户停止使用邮箱时,重置状态并关闭通知 + // 当用户停止使用邮箱时(地址被清除),重置状态并关闭通知 if (!address) { setHasReceivedEmail(false); toast.dismiss('password-notification'); } prevEmailsLength.current = emails.length; - }, [emails, address, hasReceivedEmail]); + }, [emails, address, hasReceivedEmail]); // 依赖项包含 emails, address 和 hasReceivedEmail 以响应所有相关变化 // 创建新邮箱地址的处理函数