全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 5 分钟 ✍️ juanwangdev

activated与deactivated(keep-alive)

这两个钩子仅在组件被 <keep-alive> 包裹时触发。

activated

vue
<keep-alive>
  <MyComponent />
</keep-alive>
JavaScript
export default {
  activated() {
    // 组件被激活(从缓存恢复)
    console.log('组件已激活')
  }
}

deactivated

JavaScript
export default {
  deactivated() {
    // 组件被停用(存入缓存)
    console.log('组件已停用')
  }
}

Composition API

JavaScript
import { onActivated, onDeactivated } from 'vue'

export default {
  setup() {
    onActivated(() => {
      console.log('激活')
    })
    
    onDeactivated(() => {
      console.log('停用')
    })
  }
}

典型用途

JavaScript
export default {
  activated() {
    // 恢复数据或状态
    this.restoreState()
  },
  deactivated() {
    // 保存状态以便下次恢复
    this.saveState()
  }
}
钩子触发时机用途
activated从缓存恢复时恢复状态、刷新数据
deactivated存入缓存时保存状态、暂停操作

未被 <keep-alive> 包裹的组件不会触发这两个钩子。

要点总结

  • 仅在 <keep-alive> 缓存组件中有效
  • activated 组件从缓存中恢复时触发
  • deactivated 组件存入缓存时触发
  • 用于管理缓存组件的状态恢复

📝 发现内容有误?点击此处直接编辑

← 上一篇 组件通信
下一篇 → beforeCreate与created
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库