Vue 监听器watch的详细使用

默认方式

没什么可说的~~~

status: function(newVal){
  // 处理被观察属性的变化
}
 // 或者
status: function(newVal, oldVal){
// 处理被观察属性的变化
}

带选项的方式

注意选取合适的选项参数
示例

status: {
  immediate: true,
  deep: true,
  handler(newVal, oldVal) {
        
  }
},
  • immediate

    官方解释是 在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调,其实可以理解为首次给被监测的实例赋初始值时是否执行handler处理,实际上大部分情况是不需要的,更多情况是期望拿到特定情况下的变化值来做响应的逻辑处理。

  • deep

    为了发现对象内部值的变化,可以在选项参数中指定 deep: true。注意监听数组的变动不需要这么做。
    如果想监听对象的内部某一个属性值的变化,可以设置deep:ture,这时监听器会给对象内部的所有属性加上watch,如果对象内部层级有多级,且会逐层添加,所以会对性能的影响较大,这时候我们可以考虑采用键路径的方式实现。
    切记监听数组的变动不需要这么做!

键路径方式

如果deep对性能的开销过大可以考虑采用键路径方式去实现,如下示例:

'setting.status': {
   handler(newVal, oldVal) {
        
  }
},

你可能感兴趣的