在 模板编译 和 数据劫持 的 过程 暴露了一些 钩子!
beforeCreate | 在实例初始化之后,数据观测和事件配置之前被调用 此时data 和 methods 以及页面的DOM结构都没有初始化 什么都做不了 它能用this,但是this中不能得到data和methods中数据和方法 执行1次 | created | 在实例创建完成后被立即调用 此时data 和 methods已经可以使用 但是页面还没有渲染出来 数据已经监听完毕,能 用this对象 执行1次 | beforeMount | 在挂载开始之前,数据和模板编译完成,还没有挂载到dom节点中之前执行 此时页面上还看不到真实数据 只是一个模板页面而已 执行1次 | mounted | el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。 也就是虚拟dom挂载到真实的dom中去了 数据已经真实渲染到页面上 在这个钩子函数里面可以进行数据请求等 执行1次 | beforeUpdate | 数据修改之前调用,页面上数据还是旧的 n次 | updated | 数据修改之后,页面上数据已经替换成最新的 n次 | beforeDestroy | 实例销毁之前调用 一般会在此处对于计算器等进行清理处理 // 离开之前清空动画 执行1次 | destroyed | 实例销毁后调用 执行1次 | activated | keep-alive 组件激活时调用 | deactivated | keep-alive 组件停用时调用 | errorCaptured | 当捕获一个来自子孙组件的错误时被调用 |
|
vue3放弃了el,直接用$mount()
网络请求写在哪
created beforeMount mounted
都可以写网络请求,但是mounted是属于真实dom已经渲染,页面结构已经出来了,然后进行的网络请求,用户知道已经打开了,推荐使用。
在虚拟dom进行网络请求,会在请求后再渲染,页面是大白板,网络请求要是慢的话,用户会觉得是网速慢,就F5刷新了,无形中负载变高了。
beforeUpdate和updated也能写,但是不能改变数据源。
销毁里写就是完全没意义。