Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 1.3 KB

File metadata and controls

30 lines (20 loc) · 1.3 KB

KeepAlive

当一个组件实例从 DOM 上移除但因为被 <KeepAlive> 缓存而仍作为组件树的一部分时,它将变为不活跃状态而不是被卸载。当一个组件实例作为缓存树的一部分插入到 DOM 中时,它将重新被激活

非活跃的组件将会被缓存(包括记录的状态将会保持而不是销毁)

在 DOM 内模板中使用时,它应该被写为 <keep-alive>

一个持续存在的组件可以通过 onActivated() 和 onDeactivated() 注册相应的两个状态的生命周期钩子:

<script setup>
import { onActivated, onDeactivated } from 'vue'

onActivated(() => {
  // 调用时机为首次挂载
  // 以及每次从缓存中被重新插入时
})

onDeactivated(() => {
  // 在从 DOM 上移除、进入缓存
  // 以及组件卸载时调用
})
</script>

<KeepAlive> 默认会缓存内部的所有组件实例,但我们可以通过 include 和 exclude prop 来定制该行为。 我们可以通过传入 max prop 来限制可被缓存的最大组件实例数。