0fc180637c
通过 display:none 模式实现轻量 KeepAlive,电商页面首次访问后保持挂载, 切换到其他页面再切回时所有右侧面板状态(上传图片、生成进度、结果)完整保留。 同时清理项目中的临时文件和本地冗余图片。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1011 B
TypeScript
32 lines
1011 B
TypeScript
import { useEffect, useState } from "react";
|
||
|
||
const COOKIE_CONSENT_KEY = "omniai:cookie-consent:v1";
|
||
|
||
export default function CookieConsentBanner() {
|
||
const [visible, setVisible] = useState(false);
|
||
|
||
useEffect(() => {
|
||
setVisible(localStorage.getItem(COOKIE_CONSENT_KEY) !== "accepted");
|
||
}, []);
|
||
|
||
const accept = () => {
|
||
localStorage.setItem(COOKIE_CONSENT_KEY, "accepted");
|
||
setVisible(false);
|
||
};
|
||
|
||
if (!visible) return null;
|
||
|
||
return (
|
||
<section className="cookie-consent" role="dialog" aria-live="polite" aria-label="Cookie 使用提示">
|
||
<div>
|
||
<strong>Cookie 与本地存储提示</strong>
|
||
<p>我们使用 Cookie 和本地存储保存登录状态、偏好设置、创作草稿和断点续传数据,用于保障服务正常运行。</p>
|
||
</div>
|
||
<div className="cookie-consent__actions">
|
||
<a href="#/privacyPolicy">查看隐私政策</a>
|
||
<button type="button" onClick={accept}>同意并继续</button>
|
||
</div>
|
||
</section>
|
||
);
|
||
}
|