認識 Vue.js watch 監聽器

認識 watch 如何使用、有哪些可選設定

Lai
UnaLai
4 min readFeb 16, 2020

--

Outline
* 認識 watch 監聽器
* key (欲觀察的值)
* value (想做的事情,及一些可選設定)
* 小小的範例
* 參考資料

➤ 認識 watch 監聽器

watch 監聽器,用以監聽某個數據,並觸發相對應的處理。

在 watch 物件底下,我們可以使用鍵值(key-value)的方式定義我們想要觀察的值,及相對應的操作。

接著我們從 key,也就是我們想觀察的值說起。

➤ Key (欲觀察的值)

  • 觀察 data 中的值
  • 觀察 data 中的 Object 底下的值
    1. 這邊要提醒的是,要記得使用引號包裹,使之為字串。
    2. 此用法情境表示只想觀察監聽 Object 底下的特定值。如果要監聽整個 Object 也可以,只是會有額外的事情需要處理,我們留到待會的 Value 設定中再提。
  • 觀察 computed 計算後的回傳值
    如果想觀察的值,是需要經過某些特定規則運算後的結果,配合 computed,監聽回傳值也可以。

➤ value (想做的事情,及一些可選設定)

基本用法

如果你不需要任何其他設定,那麼直接在 value 的部分寫入 Function 即可。其中 function 有兩個參數值,分別為改變後的值,及改變前的值。

如果想要額外管理或是複用 function,可以把 function 寫進 methods 管理。

上述的 Function,官網文件皆建議不要使用 Arrow function 來撰寫,因為 Arrow function 的 this,是在 function 被呼叫時綁定的,可能不會按照期望的指向 Vue 實例。

可選設定(options)

可選設定包含 deepimmediate。如果想要加上可選設定,需把 value 改寫為 Object 形式,用以傳入其他值。如下圖:

  • handler
    放入我們需要處理的程序。
  • deep
    當欲觀察值的特性為 call by reference,例如 Object 時,需將 deep 值設定為 true,告知 watch 需要深度觀察。否則會因為特性關係,無法觸發監聽器。
  • immediate
    監聽器預設為當值有所變化時才會觸發。如果我們希望在初始化完成後,就先觸發,執行 handler,就可以將 immediate 值設為 true。

➤ 小小的範例

即時驗證帳號格式,條件為 3~15 個字,只能使用小寫英文、數字、底線。

以上是今天的小小分享,有任何問題都歡迎留言指教,謝謝 😊

➤ 參考資料

  1. vue 官方文件 vm.$watch
  2. vue 官方文件 watch

--

--

Lai
UnaLai
Editor for

我是一名前端工程師,我熱愛學習與分享 ❤︎