1生命周期部分
vue生命周期是指vue是对象从创建到销毁的过程。
2.Vue生命周期的作用是什么?
在vue生命周期的不同阶段通过对应的钩子函数来实现组件数据管理和DOM渲染两大重要功能。
创建阶段:beforecreate:
实例已经初始化,但不能获取DOM节点。(没有data,没有el)created:
实例已经创建,仍然不能获取DOM节点。(有data,没有el)
载入阶段:beforemount:
模板编译完成,但还没挂载到界面上。(有data,有el)mounted:
编译好的模板已挂载到页面中(数据和DOM都已经渲染出来)。
更新阶段:beforeupdate:
数据发生变化立即调用,此时data中数据是最新的,但页面上数据仍然是旧的(检测到数据更新时,但DOM更新前执行)。updated:
更新结束后执行,此时data中的值和页面上的值都是最新的。
销毁阶段:beforedestroy:
当要销毁vue实例时,在销毁之前执行。destroy:
在销毁vue实例时执行。
3.第一次页面加载会触发哪几个钩子函数?beforeCreate
, created
, beforeMount
, mounted
4.简述每个生命周期具体适合哪些场景?beforecreate:
可以加Loading事件。create:
初始化完成时的事件写在这里,异步请求也适宜在这里调用(请求不宜过多,避免白屏时间太长)。
可以在这里结束loading事件,还做一些初始化,或实现函数的自执行。
此时未挂载DOM,若在此阶段进行DOM操作一定要放在Vue.nextTick()的回调函数中。mounted:
此时完成挂载DOM和渲染,需要操作DOM的方法可以放在这里,也可在这发起后端请求,拿回数据,配合路由钩子做一些事情。beforeupdate:
可在更新前访问现有的DOM,如手动移出添加的事件监听器。updated:
组件DOM已完成更新,可执行依赖的DOM操作。
注意:不要在此函数中操作数据(修改属性),会陷入死循环。activated:
在使用vue-router时有时需要使用<keep-alive></keep-alive>来缓存组件状态,这个时候created钩子就不会被重复调用了。
如果我们的子组件需要在每次加载的时候进行某些操作,