watch监听(数组或者对象)

Posted fgwh-y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了watch监听(数组或者对象)相关的知识,希望对你有一定的参考价值。

handler:监听数组或对象的属性时用到的方法

deep:深度监听,为了发现对象内部值的变化,可以在选项参数中指定 deep:true 。注意监听数组的变动不需要这么做。

immediate: 在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调

tips: 只要bet中的属性发生变化(可被监测到的),便会执行handler函数;如果想监测具体的属性变化,如pokerHistory变化时,才执行handler函数,则可以利用计算属性computed做中间层。

 

1、普通的watch
按 Ctrl+C 复制代码

data()
return
  frontPoints: 0

,
watch:
frontPoints(newValue, oldValue)
  console.log(newValue)


按 Ctrl+C 复制代码
2、数组的watch
技术图片
data() 
 return 
   winChips: new Array(11).fill(0)
 
,
watch: 
  winChips: 
 handler(newValue, oldValue) 
   for (let i = 0; i < newValue.length; i++) 
  if (oldValue[i] != newValue[i]) 
      console.log(newValue)        
     
  
   , 
  
技术图片

3、对象的watch

技术图片
data() 
  return 
    bet: 
      pokerState: 53,
      pokerHistory: ‘local‘
    
 
,
watch: 
  bet: 
    handler(newValue, oldValue) 
      console.log(newValue)    
,
    deep: true
  
技术图片

4、对象具体属性的watch[活用computed]

技术图片
data() 
  return 
    bet: 
      pokerState: 53,
      pokerHistory: ‘local‘
     
  
,
computed: 
  pokerHistory() 
    return this.bet.pokerHistory
  
,
watch: 
  pokerHistory(newValue, oldValue) 
    console.log(newValue)
  
技术图片
5、watch和computed各自处理的数据关系场景不同

watch擅长处理的场景:一个数据影响多个数据
computed擅长处理的场景:一个数据受多个数据影响

6、method和computed触发条件不同
computed只提供了缓存的值,而没有重新计算
只有符合:1.存在依赖型数据 2.依赖型数据发生改变这两个条件,computed才会重新计算。
而methods下的数据,是每次都会进行计算的

以上是关于watch监听(数组或者对象)的主要内容,如果未能解决你的问题,请参考以下文章

Vue watch监听 date中的变量 与 数组或者对象的数据变化

vue-watch

vue、watch功能对Array和Object的监听oldVal,val新老值一样的解决方案

vue之watch和计算属性computed

$scope.$watch()——监听数据变化

vue watch数组或者对象