首先,一个组件的声明周期包括以下几个部分:
结合父子组件之后 一个完整的父子组件生命周期:
父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted->父beforeUpdate->子beforeUpdate->子updated->父updated->父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
生命周期钩子函数执行顺序?
1. 首先是数据加载渲染到页面,包括初始化阶段和挂载阶段
Vue实例化(new Vue())-> 父组件beforeCreate -> 父组件 created -> 父组件 beforeMount -> 子组件 beforeCreate -> 子组件 created -> 子组件 beforeMount -> 真实DOM挂载完毕 -> 子组件 mounted -> 父组件 mounted
2. 其次当data里的数据发生了变化,进入更新阶段
父组件 beforeUpdate -> 子组件 beforeUpdate -> 子组件 updated -> 父组件 updated -> 获取更新后的真实DOM
3. 最后当$destroy()被调用进入销毁阶段
父组件 beforeDestroy -> 子组件 beforeDestroy -> 实例销毁后 -> 子组件 destroyed -> 父组件 destroyed
最最重要的一点异步请求执行的时机
每次在周期里面执行异步请求的时候,都会直接跳过周期里面的异步请求。异步请求总是在生命周期执行完毕才会开始执行异步请求