Vue 父子组件在首次渲染、组件更新、组件销毁时,生命周期执行的顺序是怎样的?
时间: 2024-06-03 13:12:54 浏览: 70
在 Vue 父子组件中,生命周期钩子函数的执行顺序如下:
1. 首次渲染:
父组件
- beforeCreate
- created
- beforeMount
- 子组件的 beforeCreate
- 子组件的 created
- 子组件的 beforeMount
- 子组件的 mounted
- 父组件的 mounted
2. 组件更新:
父组件
- beforeUpdate
- 子组件的 beforeUpdate
- 子组件的 updated
- 父组件的 updated
3. 组件销毁:
父组件
- beforeDestroy
- 子组件的 beforeDestroy
- 子组件的 destroyed
- 父组件的 destroyed
需要注意的是,如果子组件在父组件中被多次渲染,那么子组件的生命周期钩子函数也会被多次执行。并且,父组件中的生命周期钩子函数不会在子组件的生命周期钩子函数执行完成后再执行,而是在子组件的生命周期钩子函数执行期间就会被触发。
相关问题
vue 父子组件生命周期执行顺序
在Vue中,父子组件的生命周期钩子函数的执行顺序如下:
1. 父组件:
- beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
- created:在实例创建完成后被立即调用。在这一步,实例已完成以下配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
- beforeMount:在挂载开始之前被调用。相关的 render 函数首次被调用。
- mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
- beforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子中对数据进行修改。
- updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁完成之后调用。
- beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
- destroyed:Vue 实例销毁后调用。此时,Vue 实例的所有指令都已解绑,所有事件监听器都已移除。
2. 子组件:
- beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed 这些生命周期钩子函数的执行顺序与父组件相同。
vue父子组件生命周期执行顺序
Vue 父子组件生命周期执行顺序如下:
父组件(在第一次渲染时)
1. beforeCreate
2. created
3. beforeMount
子组件(在第一次渲染时)
1. beforeCreate
2. created
3. beforeMount
4. mounted
父组件(在子组件挂载完成后)
1. mounted
如果有数据更新时,父子组件执行顺序如下:
父组件
1. beforeUpdate
子组件
1. beforeUpdate
2. updated
父组件
1. updated
如果子组件被销毁,执行顺序如下:
子组件
1. beforeDestroy
2. destroyed
父组件则没有任何改变。
阅读全文