重复请求缓存

方案二:组件可能被缓存,也可能不被缓存(通用性最强)

如果这个组件有时在 里,有时又在外面(或者你不确定),你需要同时保留两个钩子,但利用一个标志位 (Flag) 来过滤掉首次的重复调用。

原理: 利用一个变量标记"是否是首次加载"。onMounted 负责首次加载,onActivated 负责后续的激活,但通过标志位跳过第一次 onActivated 的执行。

javascript 复制代码
import { ref, onMounted, onActivated } from 'vue';

const isFirstLoad = ref(true); // 标记是否为首次加载

const loadData = () => {
  console.log('发起请求...');
  // 具体的请求逻辑
};

onMounted(() => {
  loadData();
  // onMounted 执行完,不仅代表挂载完成,也消耗了"首次"的机会
  // 注意:这里不需要设为 false,逻辑主要由 onActivated 控制
});

onActivated(() => {
  // 如果是首次加载(刚执行过 onMounted),则跳过
  if (isFirstLoad.value) {
    isFirstLoad.value = false; // 将锁解开,为下一次缓存激活做准备
    return;
  }
  
  // 只有非首次(从缓存切回来)才执行
  loadData();
});
相关推荐
IronMurphy4 小时前
【算法五十七】146. LRU 缓存
算法·缓存
伊甸36 小时前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存
摇滚侠6 小时前
MyBatis 入门到项目实战 MyBatis 的缓存 56-61
java·缓存·mybatis
IT策士9 小时前
Redis 从入门到精通:Redis Stream —— 可靠消息队列
数据库·redis·缓存
小胖xiaopangss12 小时前
Redis 基础入门与实践指南
数据库·redis·缓存
syt_biancheng1 天前
Redis初识
数据库·redis·缓存
杨运交1 天前
[032][缓存模块]基于Redis Bitmap的用户行为统计实战:签到与日活分析
数据库·redis·缓存
无关86881 天前
Redis Bitmaps 用户签到系统设计方案
数据库·redis·缓存
zzz_23681 天前
【Java基础】链表的七十二变——从LRU缓存到手写浏览器前进后退
java·链表·缓存
IT策士2 天前
Redis 从入门到精通:缓存经典难题 —— 穿透、击穿、雪崩
数据库·redis·缓存