Vue WatchEffect函數創(chuàng)建高級偵聽器
WatchEffect高級偵聽器
在 Vue 3 中,我們可以使用 watchEffect
函數來創(chuàng)建高級偵聽器。與 watch
和 computed
不同,watchEffect
不需要指定依賴項,它會自動追蹤響應式狀態(tài)的變化,并在變化時重新運行。
使用 watchEffect 函數
下面是一個簡單的示例,使用 watchEffect
函數來偵聽一個響應式狀態(tài),并在狀態(tài)變化時輸出一條消息:
import { reactive, watchEffect } from 'vue'; const state = reactive({ count: 0, }); watchEffect(() => { console.log(`Count is now: ${state.count}`); }); // 改變狀態(tài),輸出 Count is now: 1 state.count++;
在上面的示例中,我們使用 reactive
函數來創(chuàng)建一個響應式對象 state
,并使用 watchEffect
函數來創(chuàng)建一個偵聽器。watchEffect
函數接受一個函數作為參數,這個函數會被自動運行,并在其中使用響應式狀態(tài)。當其中任何一個響應式狀態(tài)發(fā)生變化時,這個函數會被重新運行。
停止偵聽
與 watch
和 computed
不同,watchEffect
函數不會返回一個停止偵聽的函數。如果我們需要停止偵聽,我們可以將 watchEffect
的返回值設為 null
,例如:
import { reactive, watchEffect } from 'vue'; const state = reactive({ count: 0, }); const stop = watchEffect(() => { console.log(`Count is now: ${state.count}`); }); // 改變狀態(tài),輸出 Count is now: 1 state.count++; // 停止偵聽 stop();
在上面的示例中,我們將 watchEffect
的返回值保存到一個變量 stop
中,然后在需要停止偵聽時調用這個函數。
偵聽多個狀態(tài)
如果需要偵聽多個響應式狀態(tài),我們可以在 watchEffect
函數中使用這些狀態(tài),并在函數中返回一個計算值,例如:
import { reactive, watchEffect } from 'vue'; const state = reactive({ count1: 0, count2: 0, }); watchEffect(() => { const sum = state.count1 + state.count2; console.log(`Sum is now: ${sum}`); }); // 改變狀態(tài),輸出 Sum is now: 1 state.count1++; // 改變狀態(tài),輸出 Sum is now: 3 state.count2 += 2;
在上面的示例中,我們使用 reactive
函數創(chuàng)建一個響應式對象 state
,并在 watchEffect
函數中使用了 state.count1
和 state.count2
兩個響應式狀態(tài),然后計算了這兩個狀態(tài)的和,并輸出了這個和。
懶執(zhí)行
與 computed
類似,watchEffect
函數也支持懶執(zhí)行(lazy evaluation)。如果我們將 watchEffect
的第二個參數設置為 { lazy: true }
,則這個函數會在第一次訪問響應式狀態(tài)時才會被運行,例如:
import { reactive, watchEffect } from 'vue'; const state = reactive({ count: 0, }); watchEffect( () => { console.log(`Count is now: ${state.count}`); }, { lazy: true } ); // 訪問狀態(tài),輸出 Count is now: 1 state.count++;
在上面的示例中,我們將 watchEffect
的第二個參數設置為 { lazy: true }
,然后在代碼中訪問了響應式狀態(tài) state.count
。這時,watchEffect
中的函數才會被運行。
總結
watchEffect
函數是 Vue 3 中的一個新特性,它可以用來創(chuàng)建高級偵聽器,自動追蹤響應式狀態(tài)的變化,并在變化時重新運行。與 watch
和 computed
不同,watchEffect
不需要指定依賴項,它會自動追蹤響應式狀態(tài)的變化。如果需要停止偵聽,我們可以將 watchEffect
的返回值設為 null
。如果需要偵聽多個響應式狀態(tài),我們可以在 watchEffect
函數中使用這些狀態(tài),并在函數中返回一個計算值。watchEffect
函數也支持懶執(zhí)行(lazy evaluation),可以在第一次訪問響應式狀態(tài)時才會被運行。
到此這篇關于Vue WatchEffect函數創(chuàng)建高級偵聽器的文章就介紹到這了,更多相關Vue WatchEffect內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue開發(fā)手冊Function-based?API?RFC
這篇文章主要為大家介紹了Vue開發(fā)手冊Function-based?API?RFC使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11vue中將el-switch值true、false改為number類型的1和0
這篇文章主要介紹了vue中將el-switch值true、false改為number類型的1和0問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10vue中手機號,郵箱正則驗證以及60s發(fā)送驗證碼的實例
下面小編就為大家分享一篇vue中手機號,郵箱正則驗證以及60s發(fā)送驗證碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03element plus中el-upload實現上傳多張圖片的示例代碼
最近寫項目的時候需要一次上傳多張圖片,本文主要介紹了element plus中el-upload實現上傳多張圖片的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-01-01