You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3 Quasar组件中onActivated钩子无法触发问题求助

Vue 3.0.0中onActivated钩子不触发的解决方案

问题核心

onActivated 钩子仅会在被<keep-alive>包裹的组件从缓存中被激活时触发。你的代码存在两个关键缺失:

  • 组件MyComp未被<keep-alive>包裹,不会进入缓存机制
  • 没有触发组件从缓存恢复的场景(比如组件切换、路由返回等)

修复方案

1. 用<keep-alive>包裹目标组件

修改Index.vue,将MyComp放入<keep-alive>标签内,同时添加组件切换逻辑来触发缓存激活:

<template>
  <keep-alive>
    <MyComp v-if="isShow" />
  </keep-alive>
  <button @click="toggleShow">切换组件</button>
</template>

<script setup>
import MyComp from "../components/MyComp.vue";
import { ref } from "vue";

const isShow = ref(true);

const toggleShow = () => {
  isShow.value = !isShow.value;
};
</script>

2. 验证触发逻辑

点击按钮切换组件显示状态:

  • 首次渲染组件时,onMounted会触发一次
  • 当组件从隐藏(isShow=false)变回显示(isShow=true)时,组件从缓存中恢复,onActivated会被触发,控制台会输出对应日志

如果是路由场景,可在路由出口处用<keep-alive>包裹组件,切换路由后返回时同样会触发onActivated钩子。

内容的提问来源于stack exchange,提问作者acroscene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:50:25