vue的生命周期钩子
- beforeCreate
vue实例刚初始化的时候,还没有进行数据观测及event/wathcer事件配置(无法访问data, methods, watcher等,但是可以访问$router及$route)
- created
实例初始化完成,此时能够访问data, methods, watcher,可以在此钩子函数发送请求,改变数据,此时还未挂载DOM,无法访问$el
- beforeMount
DOM挂载前调用,render函数被首次调用,生成virtual-DOM,无法访问$el
- mounted
DOM挂载完成,生成$el并替换el,此时可以进行依赖DOM的操作,可以访问$el
- beforeUpdate
数据更新后调用,此时可以进一步更改数据,并不会触发重渲染
- updated
virtual-DOM重新渲染和打补丁后调用,组件DOM已经更新
- beforeDestroy
实例销毁前调用,此时实例完全可用,可以清除定时器
- destroy
实例销毁后调用,此时也可以清除定时器
- activated
被keep-alive缓存的组件激活时调用,可以在此时对组件中的数据进行更新
- deactivated
被keep-alive缓存的组件停用时调用
- errorCaptured
捕获到子组件错误时调用,会收到三个参数: 错误对象, 出错的组件实例, 包含错误来源信息的字符串,可以返回false以阻止错误继续向上传递
面试题: 父组件和子组件初次渲染时,父,子组件生命周期调用顺序是什么?
- $parent: beforeCreate
- $parent: created
- $parent: beforeMount(此时父组件
虚拟DOM已经渲染好,需要挂载真实DOM,所以此时去加载子组件)
- $children: beforeCreate
- $children: created
- $children: beforeMount
- $children: mounted(子组件生成真实DOM后,父组件挂载完成,父组件
mounted钩子触发)
- $parent: mounted