# 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 的根数据对象 添加属性!!!

Update on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Nico Niconi WeChat Pay

WeChat Pay

Nico Niconi Alipay

Alipay