Vue3 偵聽器 watch 和 watchEffect

一、基本使用

1. 寫法一:偵聽watch時,傳入一個getter函數(shù)

? ? ? ?const info = reactive({ name: "coco", age: 10 })

? ? ? ?watch(() => info.name, (newValue, oldValue) => {

? ? ? ? ? ? console.log("newValue: ", newValue);

? ? ? ? ? ? console.log("oldValue: ", oldValue);

? ? ? ? })

2. 寫法二:傳入一個可響應式對象:ref對象 reactive對象

情況一:reactive對象獲取到的newValue和oldValue本身都是reactive對象

情況二:ref對象獲取newVlaue和oldValue是value值的本身

二、watch偵聽多個數(shù)據(jù)源

1. 寫法一:Array (獲取到的對象是reactive對象)

? ? ? ?watch([info, name], (newValue, oldValue) => {

? ? ? ? ? ? console.log("newValue: ", newValue);

? ? ? ? ? ? console.log("oldValue: ", oldValue);

? ? ? ? })

2. 寫法二:getter函數(shù),并且對可響應對象進行解構(獲取到的普通數(shù)組或對象)

? ? ? ?watch(() => [{ ...info }, name], (newValue, oldValue) => {

? ? ? ? ? ? console.log("newValue: ", newValue);

? ? ? ? ? ? console.log("oldValue: ", oldValue);

? ? ? ? })

三、深度監(jiān)聽

1. 監(jiān)聽 reactive對象/數(shù)組時,默認便有深度監(jiān)聽

2. 監(jiān)聽普通對象/數(shù)組時,watch添加第三個參數(shù){deep:true} 即可

四、立即執(zhí)行

watch添加第三個參數(shù){immediate: true} 即可

五、watchEffect(自動收集響應式的依賴)

1. 第一個參數(shù):

2. 第二個參數(shù):flush 執(zhí)行時機(不推薦)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容