beforeDestroy
→ beforeUnmount
(Vue3)destroyed
→ unmounted
(Vue3)renderTracked
:跟踪虚拟 DOM 渲染依赖(首次渲染和后续更新时触发)。renderTriggered
:追踪重新渲染的触发原因(仅更新时触发)。setup()
替代 beforeCreate
和 created
,生命周期钩子通过函数形式引入(如 onMounted
)。Vue2 钩子 | Vue3 钩子(Options API) | Vue3 Composition API 等效函数 | 触发时机 |
---|---|---|---|
beforeCreate |
beforeCreate |
无(在 setup() 中替代) |
实例初始化后,数据观测/事件配置前。 |
created |
created |
无(在 setup() 中替代) |
实例创建完成,数据观测/方法已配置。 |
beforeMount |
beforeMount |
onBeforeMount |
挂载开始前,首次调用 render 函数。 |
mounted |
mounted |
onMounted |
实例挂载到 DOM 后。 |
beforeUpdate |
beforeUpdate |
onBeforeUpdate |
数据变化后,虚拟 DOM 更新前。 |
updated |
updated |
onUpdated |
数据变化导致虚拟 DOM 重新渲染并打补丁后。 |
beforeDestroy |
beforeUnmount |
onBeforeUnmount |
实例卸载前。 |
destroyed |
unmounted |
onUnmounted |
实例卸载后,所有子实例和事件监听器被移除。 |
- | - | onRenderTracked |
调试用,跟踪组件渲染依赖(Vue3 新增)。 |
- | - | onRenderTriggered |
调试用,追踪触发重新渲染的依赖变化(Vue3 新增)。 |
beforeCreate
setup()
替代,代码直接写入 setup
。created
setup()
中。beforeMount
mounted
mounted
不保证父组件已挂载。beforeUpdate
updated
beforeUnmount
(Vue3) / beforeDestroy
(Vue2)
unmounted
(Vue3) / destroyed
(Vue2)
renderTracked
& renderTriggered
(Vue3 新增)
onRenderTriggered((e) => {
console.log('重新渲染由以下依赖触发:', e.target);
});
注册方式:
export default {
mounted() {
// 代码
}
}
setup()
中引入钩子函数。import { onMounted } from 'vue';
export default {
setup() {
onMounted(() => {
// 代码
});
}
}
执行顺序:
onMounted
)先于 Options API 钩子(如 mounted
)执行。unmount
更准确描述组件卸载阶段。renderTracked
和 renderTriggered
便于性能优化。destroyed
→ unmounted
)。beforeDestroy
和 destroyed
为 beforeUnmount
和 unmounted
。setup()
中优先使用 Composition API 钩子。mounted
或 updated
中执行耗时操作。onRenderTracked
分析渲染依赖,减少不必要的更新。