很多時候我們需要監聽資料,可能是路由,型別可能會是字串,陣列,物件,整理了下幾種監聽的方式。
普通的watch
data() {
return {
frontPoints: 0
}
},
watch: {
frontPoints(newValue, oldValue) {
console.log(newValue)
}
}
複製程式碼
陣列的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)
        }
      }
    },
    deep: true
  }
}
複製程式碼
物件的watch
data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    }
}
},
watch: {
  bet: {
    handler(newValue, oldValue) {
      console.log(newValue)
    },
    deep: true
  }
}
複製程式碼
只要bet中的屬性發生變化(可被監測到的),便會執行handler函式;
如果想監測具體的屬性變化,如pokerHistory變化時,才執行handler函式,則可以利用計算屬性computed做中間層。
事例如下:
物件具體屬性的watch[活用computed]
data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    }
}
},
computed: {
  pokerHistory() {
    return this.bet.pokerHistory
  }
},
watch: {
  pokerHistory(newValue, oldValue) {
    console.log(newValue)
  }
}
複製程式碼