生命周期篇
1.生命周期四个阶段
初始化 (create)--- 组件挂载(mount)-----组件更新 (update)--- 销毁(destroy)
![95316826c93f1a4452574c99c3ad97fd.png](https://img-blog.csdnimg.cn/img_convert/95316826c93f1a4452574c99c3ad97fd.png)
2.初次渲染就会触发的生命周期
- beforeCreate() , created()
- beforeMount() , mounted()
3.父组件和子组件之间的生命周期执行顺序
组件的调用顺序都是先父后子,渲染完成的顺序是先子后父。组件的销毁操作是先父后子,销毁完成的顺序是先子后父。
加载渲染过程 子组件在父组件的beforeMount和Mounted之间渲染
- 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
子组件更新过程
- 父beforeUpdate->子beforeUpdate->子updated->父updated
父组件更新过程
- 影响到子组件:- 父beforeUpdate -> 子beforeUpdate->子updated -> 父updted
- 不影响子组件:- 父beforeUpdate -> 父updated
销毁过程
- 父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
4.什么阶段才能调用DOM
在钩子函数 mounted 被调用前,Vue 已经将编译好的模板挂载到页面上,所以在 mounted 中可以访问操作 DOM。
5.什么阶段能发起请求
- 可以在钩子函数 created、beforeMount、mounted 中进行调用,因为在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据进行赋值。
- 但是推荐在 created 钩子函数中调用异步请求,因为在 created 钩子函数中调用异步请求有以下优点:
能更快获取到服务端数据,减少页面loading 时间;
ssr不支持 beforeMount 、mounted 钩子函数,所以放在 created 中有助于一致性;