Vue2.0-3.0 父子组件生命周期执行顺序

195 阅读2分钟

Vue 生命周期

Vue 生命周期

vue 2.0 名称vue 3.0 名称用途
beforeCreate createdsetup开始创建组件 创建data和method 在 beforeCreate 和 created 之前执行 vue3 中没有 beforeCreate 和 created 钩子函数
beforeMountonBeforeMount组件挂载到节点之前执行
mountedonMounted组件挂载完成后执行
beforeUpdateonBeforeUpdate组件更新之前执行
updatedonUpdated组件更新完成之后执行 只有页面中使用的 data 更新 才会被触发 渲染到页面的数据被更改了
beforeDestroyonBeforeUnmount组件卸载之前执行 定时器清除
destroyedonUnmounted组件卸载完成后执行

Vue2和Vue3的生命周期区别:

  1. beforeCreate 、created  两个钩子被setup来替代
  2. destory(vue 2.0) 改名为 unmounted(vue 3.0) 卸载
  3. vue 3.0 中都是以引入的形式加载,使用时前面都加 on 且都采用调用函数的方式 onMounted(()=>{})

父子组件嵌套生命周期执行顺序

1.初始化与挂载生命周期的顺序

vue 2.0: 父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> -> 子 beforeMount -> 子 mounted ->父 mounted

vue 3.0: 父 setup -> 父 onBeforeMount -> 子 setup -> 子 onBeforeMount -> 子 onMounted -> 父 onMounted

执行顺序:父组件的生命周期到虚拟DOM挂载后开始执行子组件的生命周期,最后在执行父组件的真实DOM挂载

注意事项:setup 是在组件的创建阶段执行的,而不是挂载阶段

2.父子组件更新前后生命周期的顺序(vue 2.0 和 vue 3.0 顺序一样)

父 beforeUpdate->子 beforeUpdate->子 updated->父 updated

执行原理:为保证父组件的视图与子组件的数据同步,Vue 在子组件数据变化后先触发父组件的生命周期钩子函数,然后再更新子组件的视图

3.父子组件销毁前后生命周期的顺序(vue 2.0 和 vue 3.0 顺序一样)

vue 2.0: 父 beforeDestroy->子 beforeDestroy->子 destroyed->父 destroyed

vue 3.0: 父 onBeforeUnmount->子 onBeforeUnmount->子 onUnmounted->父 onUnmounted

当子组件全部销毁完成后,才会开始销毁父组件。以确保子组件中的任何相关的依赖和引用在销毁父组件时不会出现问题