vue2和vue3的生命周期钩子函数
时间: 2024-08-14 12:01:40 浏览: 102
vue3生命周期--钩子函数图解(中文版).svg
Vue 2 和 Vue 3 的生命周期钩子函数有一些共同点,但也存在一些差异。以下是Vue 2和Vue 3的主要生命周期阶段以及对应的钩子函数:
**Vue 2 生命周期钩子函数:**
1. **创建前 (beforeCreate)**
- `beforeCreate`:实例刚被创建但还未挂载到DOM上。
2. **创建完成 (created)**
- `created`:组件已完全创建,并且数据已经初始化完毕。
3. **挂载前 (mounted)**
- `mounted`:组件已挂载到DOM上并已插入,此时可以操作DOM元素了。
4. **更新 (updated)**
- `data`变化会触发`updated`,但是不会触发`render`。
5. **渲染之前 (beforeUpdate)**
- 新的`VNode`准备渲染时调用,但数据还没改变。
6. **渲染完成 (rendered)**
- 数据发生变化后的每次更新都会先调用`render`,然后触发`updated`。
7. **卸载 (beforeDestroy)**
- 组件即将销毁但仍存在于DOM中,可以在此做清理工作。
8. **销毁 (destroyed)**
- 组件已被移除并从DOM中卸载。
**Vue 3 生命周期钩子函数的变化:**
Vue 3 引入了一些新的生命周期钩子和改进:
1. **setup()**: 这是单文件组件(SFC)的新特性,它取代了部分旧钩子,如`created`、`beforeDestroy`等,用于执行组件的初始化逻辑。
2. **onBeforeMount(), onMounted(), onBeforeUnmount()**: 分别对应于`beforeCreate`, `created`, `beforeDestroy`,但更清晰地表示特定状态。
3. **不再推荐使用$watch**: 在Vue 3中,建议使用`reactive`或自定义`computed`代替。
4. **响应式系统优化**: Vue 3引入了更强大的响应式系统,使得数据更改的检测更为高效。
**相关问题--:**
1. Vue 3 中的 setup 函数是如何工作的?
2. 在Vue 3中为什么要弃用 $watch?
3. Vue 2和Vue 3在生命周期管理上有哪些主要区别?
阅读全文