当前位置: 首页 > news >正文

vue ts 本地缓存数据

vue ts 本地缓存数据

需求是:给每日最高热度的数据,每个用户弹窗三次,持续五秒
// 每日最高热度 弹窗三次
const popupKey = 'dailyPopupCount_';
const today = new Date().toISOString().split('T')[0]; // dailyPopupCount_2024-08-26
const popupCount = ref(parseInt(localStorage.getItem(`${popupKey}${today}`) || '0', 10));
export const showHost = ref(false); //最高热度弹窗
export const countdown = ref(0);
export let timer: number | null | any = null;
// 检查并更新弹窗显示状态
export const checkAndShowPopup = () => {if (popupCount.value < 3) {showHost.value = true;countdown.value = 5; // 初始化倒计时为5秒timer = setInterval(updateCountdown, 1000); // 每秒更新一次倒计时popupCount.value++;localStorage.setItem(`${popupKey}${today}`, popupCount.value.toString());}// 遍历 localStorage 中的所有项for (let i = localStorage.length - 1; i >= 0; i--) {const key = localStorage.key(i);if (key) {// 检查键是否以 dailyPopupCount_ 开头,并且是否不代表今天的日期if (key.startsWith(popupKey) && !key.endsWith(today)) {// 移除这个键localStorage.removeItem(key);}}}
};// 手动关闭弹窗
export const hidePopup = () => {showHost.value = false;if (timer) {timeFun();clearTime();}
};const timeFun = () => {// 隐藏弹窗并更新弹窗次数showHost.value = false;localStorage.setItem(`${popupKey}${today}`, popupCount.value.toString());
};const clearTime = () => {clearInterval(timer!);timer = null;
};// 更新倒计时
const updateCountdown = () => {if (countdown.value > 0) {countdown.value--;} else {timeFun();clearTime();}
};

http://www.mrgr.cn/news/20931.html

相关文章:

  • html 单页面路由模式hash和history
  • 用fastapi搭建cpca地址提取服务接口
  • [一文讲透] STM32实现ADC转换并使用DMA传输
  • 鸿蒙轻内核M核源码分析系列八 静态内存MemoryBox
  • k8s上搭建devops环境
  • 99%的Java程序员不知道的Java Instrument
  • tkinter中按比例放大
  • HTTP与HTTPS在软件测试中的解析
  • SpringBoot项目用Aspose-Words将Word转换为PDF文件正常显示中文的正确姿势
  • 在深度学习计算机视觉的语义分割中,Boundary和Edge的区别是?
  • 波导模式分析2 用于圆TE01模式高功率传输线的大型多模波导滤波器
  • 【新闻转载】2024年上半年勒索软件态势分析:团伙数量激增,攻击策略多样化
  • 大模型日报|9 篇必读的大模型论文
  • 二级菜单的两种思路(完成部分)
  • 行业域名有哪些?
  • Day17_0.1基础学习MATLAB学习小技巧总结(17)——字符向量元胞数组
  • MySQL之对数据库和表的操作
  • 元宇宙先驱,城市区块链
  • CSS学习6--背景图片、颜色、位置、附着、简写、透明、缩放、多背景、凹凸文字、导航栏例子
  • 什么是数据结构三要素?