# Vue2 生命周期
# beforeCreate
- 在实例初始化之后,数据观测(data observer)和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能访问
# created
- 实例已经创建完成之后被调用。在这一步,实例已完成一下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。这里没有 el,如果非要与 dom 进行交互,可以通过 vm.nextTick 来访问 dom
# beforeMount
- 在挂载开始之前被调用:相关的 render 函数首次被调用
# mounted
- 在挂载完成后发生,在当前阶段,真实的 dom 挂载完毕,数据完成双向绑定,可以访问到 dom 节点
# beforeUpdate
- 数据更新时调用,发生在虚拟 dom 重新渲染和打补丁 (patch) 之前。可以在这个钩子中进一步地更改状态,这不会触发附件的重渲染过程
# updated
- 发生在更新完成之后,当前阶段组件 dom 已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新,该钩子在服务器端渲染期间不被调用
# beforeDestroy
- 实例销毁之前调用。在这一步,实例仍然完全可用。我们可以在这时进行善后收尾工作,比如清除计时器。
# destroyed
- Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
# activated
- keep-alive 专属,组件被激活时调用
# deactivated
- keep-alive 专属,组件被销毁时调用
# Vue 监视数据的原理
- vue 会监视 data 中所有层次的数据。
# 如何监测对象中的数据?
- 通过 setter 实现监视,且要在 new Vue 时就传入要监测的数据。
- 对象中后追加的属性,Vue 默认不做响应式处理
- 如需给后添加的属性做响应式,请使用如下 API:
- Vue.set (target,propertyName/index,value) 或
- vm.$set(target,propertyName/index,value)
# 如何监测数组中的数据?
- 通过包裹数组更新元素的方法实现,本质就是做了两件事:
- 调用原生对应的方法对数组进行更新。
- 重新解析模板,进而更新页面。
# 在 Vue 修改数组中的某个元素一定要用如下方法
-
使用这些 API:push ()、pop ()、shift ()、unshift ()、splice ()、sort ()、reverse ()
2.Vue.set () 或 vm.$set ()
-
特别注意:Vue.set () 和 vm.$set () 不能给 vm 或 vm 的根数据对象 添加属性!!!