前端/移动开发面试题更新 2026-08-05

在 Vue 中,组件的销毁生命周期具体在哪些场景下会被触发?

前端/移动开发技术原理Vue

考察说明

考查对 Vue 组件生命周期中销毁阶段触发时机的理解。

回答思路

  1. 【回答框架 1】Vue 组件的销毁主要发生在组件从 DOM 中被移除且不再需要时,会触发 beforeDestroy 和 destroyed 钩子(Vue 3 中为 beforeUnmount 和 unmounted)。
  2. 【回答框架 2】常见的触发场景包括:使用 v-if 条件为 false 时,组件会被销毁;动态组件通过 <component :is> 切换时,旧组件会被销毁;使用 v-for 渲染的列表项被删除时,对应组件实例会被销毁。
  3. 【回答框架 3】路由切换时,如果组件不在新路由的视图内,且未被 keep-alive 缓存,则会销毁。keep-alive 缓存组件时,组件不会销毁,而是进入 deactivated 状态。
  4. 【回答框架 4】手动调用组件实例的 $destroy() 方法(Vue 2)或 unmount()(Vue 3)也会销毁组件,但通常不建议手动调用,应通过数据驱动的方式管理组件生命周期。
  5. 【关键点 1】v-if 从 true 变为 false 时会销毁组件。
  6. 【关键点 2】动态组件切换时,旧组件会被销毁。
  7. 【关键点 3】路由切换且组件未缓存时,组件会被销毁。
  8. 【关键点 4】keep-alive 缓存的组件不会销毁,而是进入 deactivated 状态。
  9. 【易错点 1】不应混淆 v-if 和 v-show 的销毁行为,v-show 只是切换 CSS 显示,不会销毁组件。
  10. 【易错点 2】组件销毁后其内部的事件监听器、定时器等需要手动清理,否则可能导致内存泄漏。