在 Vue 中,keep-alive 组件为被包裹的组件提供了哪些额外的生命周期钩子?
考察说明
考查对 Vue keep-alive 组件缓存机制及其生命周期钩子的理解。
回答思路
- 【回答框架 1】keep-alive 是 Vue 内置组件,用于缓存动态组件或路由组件,避免重复渲染。被缓存的组件会额外触发两个生命周期钩子:activated 和 deactivated。
- 【回答框架 2】activated 在组件被重新插入 DOM 时触发,即从缓存中激活时;deactivated 在组件被移除并缓存时触发。这两个钩子分别对应组件激活和失活的状态。
- 【回答框架 3】与常规生命周期钩子(如 created、mounted)不同,activated 和 deactivated 仅在 keep-alive 包裹下生效,且每次激活/失活都会触发,适合处理缓存组件的状态刷新或资源释放。
- 【回答框架 4】使用 keep-alive 时,组件首次挂载会依次触发 created、mounted、activated;之后切换时只触发 deactivated 和 activated,不会重复执行 created 和 mounted。
- 【回答框架 5】注意:activated 和 deactivated 是 keep-alive 特有的钩子,普通组件不会触发;若组件未被缓存,则不会调用这两个钩子。
- 【关键点 1】keep-alive 提供 activated 和 deactivated 两个生命周期钩子。
- 【关键点 2】activated 在组件激活时触发,deactivated 在组件失活时触发。
- 【关键点 3】首次挂载顺序为 created、mounted、activated;后续切换只触发 deactivated 和 activated。
- 【关键点 4】这两个钩子仅在使用 keep-alive 缓存时生效。
- 【易错点 1】不要将 activated 与 mounted 混淆,mounted 只在首次挂载时执行一次。
- 【易错点 2】在 deactivated 中清理定时器或事件监听,避免内存泄漏。
- 【易错点 3】若组件未包裹在 keep-alive 中,activated 和 deactivated 不会触发。