vue watch 监听

1、普通的watch

复制代码
data() {
    return {
        frontPoints: 0    
    }
},
watch: {
    frontPoints(newValue, oldValue) {
        console.log(newValue)
    }
}
复制代码

2、数组的watch,注意监听数组的变动不需要deep: true 。

复制代码
data() {
    return {
        winChips: new Array(11).fill(0)   
    }
},
watch: {
  winChips(newValue, oldValue) {
    for (let i = 0; i < newValue.length; i++) {
      if (oldValue[i] != newValue[i]) {
        console.log(newValue)
      }
    }
  }
}
复制代码

fill方法使用给定值,填充一个数组。

['a', 'b', 'c'].fill(7)  
// [7, 7, 7]  
new Array(3).fill(7)  
// [7, 7, 7]  
['a', 'b', 'c'].fill(7, 1, 2)  
// ['a', 7, 'c']  

上面代码表明,fill方法用于空数组的初始化非常方便。数组中已有的元素,会被全部抹去。 

3、对象的watch

复制代码
data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    } } }, watch: {   bet: {
    handler(newValue, oldValue) {
      console.log(newValue)
    },
    deep: true
  }
}
复制代码



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

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

复制代码
data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    } } },
computed: {
  pokerHistory() {
    return this.bet.pokerHistory
  }
}, watch: {   pokerHistory(newValue, oldValue) {
    console.log(newValue)
  }
}
复制代码
 
 
原文地址:https://www.cnblogs.com/chiangyibo/p/8473708.html