vue的生命周期执行顺序啊,这事儿得从2013年说起了。那时候,Vue.js刚出来,我就开始研究这个了。说实话,当时我也没想明白,这个顺序怎么这么复杂。不过,现在来说,Vue的生命周期钩子执行顺序是这样的:
1. beforeCreate: 在实例初始化之后、数据观测和事件/watcher 设置之前被调用。
- 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
2. created: 在实例创建完成后被立即调用。在这一步,实例已完成数据观测、属性和方法的运算、watch/event事件回调。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
3. beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
4. mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
5. beforeUpdate: 数据更新时调用,发生在虚拟 DOM 打补丁之前。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
6. updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用这个钩子。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
7. beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。 - 时间:2013年,Vue刚推出时。
- 地点:全球范围内,所有使用Vue的开发者。
8. destroyed: 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
这个过程,其实就是一个用的人多了,大家总结出来的顺序。每个阶段,Vue都在默默地做着自己的事情,保证我们的应用能
初始化阶段:
- beforeCreate:创建实例时调用,此时data、methods、computed、watch 都还没初始化。
- created:在模板解析之前调用,此时data、methods、computed、watch、events 和 filters 都已经初始化。
模板解析阶段: - beforeMount:在挂载开始之前调用,此时el 属性已经渲染到 DOM 中,但内容还没开始渲染。
挂载阶段: - mounted:在挂载完成后调用,此时已渲染到 DOM 中,可以访问到 DOM 元素。
更新阶段: - beforeUpdate:数据更新时调用,此时虚拟 DOM 已更新,但真实的 DOM 还没开始更新。
DOM 更新阶段: - updated:在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。
销毁阶段: - beforeDestroy:在实例销毁之前调用,此时实例仍然完全可用。
- destroyed:在实例销毁后调用,此时所有的事件监听器已被移除,所有的子实例也被销毁。
Vue组件生命周期执行顺序:
- beforeCreate
- created
- beforeMount
- mounted
- beforeUpdate
- updated
- beforeDestroy
- destroyed