重复请求缓存

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

如果这个组件有时在 里,有时又在外面(或者你不确定),你需要同时保留两个钩子,但利用一个标志位 (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();
});
相关推荐
斯蒂文6682 小时前
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
缓存·中间件
難釋懷4 小时前
Nginx浏览器强制缓存
运维·nginx·缓存
诚信定制8394 小时前
如何启动 Redis 服务:详细步骤指南
数据库·redis·缓存
cxr8286 小时前
缓存策略探测实验方案架构设计
缓存
ffqws_19 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
枫叶丹41 天前
Loop Engineering:从提示词到循环系统
数据库·redis·缓存·loop
云计算磊哥@2 天前
运维开发宝典051-缓存服务Redis集群2
redis·缓存·运维开发
怕孤单的草丛3 天前
缓存管理面临的主要问题
java·数据库·缓存
摇滚侠3 天前
Redis7 零基础到进阶 Linux 离线安装 Redis 09-10
数据库·redis·缓存
zenithdev13 天前
fastcache:为 Go 设计的低 GC 压力内存缓存
开发语言·其他·缓存·golang