点掉公告右上角的关闭按钮,当天不再出现,第二天打开首页又弹出来,同一个人一天能关三次,控制台里存的键是 notice_closed_2025 读的却是 notice_close。乍看像缓存或者权限的锅,追下去往往不是。
const KEY = 'notice_closed'; localStorage.setItem(KEY, '1'); const closed = localStorage.getItem(KEY) === '1';
追下去是这么回事:写入和读取用了两个不同的键名,写入那侧多了年份后缀,读取那侧写死短名,取不到值就当成没关闭。组件重新挂载时还会把旧键再写一遍,问题看起来像随机复发。
「公告关闭状态失效」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,把键名抽成一个常量,读写都引用它,别在两处手写字符串;在浏览器存储面板里确认键值和过期时间,顺手清掉历史遗留的旧键;关闭动作改成写服务端用户元数据,换设备也不会重新弹。
验收就看一点,关闭后刷新页面公告不再出现,存储面板里只剩一个 notice_closed 键。
