Vue3中watchEffect高級偵聽器的具體使用
更新時間:2024年01月21日 11:54:17 作者:Unique·Blue
Vue3中新增了一種特殊的監(jiān)聽器watchEffect,本文主要介紹了Vue3中watchEffect高級偵聽器的具體使用,具有一定的參考價值,感興趣的可以了解一下
示例均采用 <script setup>,且包含 typescript 的基礎用法
前言
Vue3 中新增了一種特殊的監(jiān)聽器 watchEffect,它的類型是:
function watchEffect( effect: (onCleanup: OnCleanup) => void, options?: WatchEffectOptions ): StopHandle
下面通過實例來理解下它的用法
一、簡單使用
- 第一個參數(shù)就是要運行的
副作用函數(shù) effect - 函數(shù)內
用到哪些數(shù)據(jù)才會監(jiān)聽哪些數(shù)據(jù) - 且會
立刻執(zhí)行一次(immediate)
<input type="text" v-model="message1" /> <br /> <input type="text" v-model="message2" /> <br />
import { ref, watchEffect } from "vue";
const message1 = ref<string>("飛機");
const message2 = ref<string>("火車");
watchEffect(() => {
console.log("message1========>,", message1);
// 不使用 message2 就不會監(jiān)聽 message2
// console.log("message2========>,", message2);
});
二、副作用 effect 的參數(shù)
- effect 的參數(shù) 也是一個
函數(shù),用來注冊清理回調。 清理回調會在該副作用下一次執(zhí)行前被調用,可以用來清理無效的副作用,例如等待中的異步請求
<input type="text" v-model="message1" /> <br /> <input type="text" v-model="message2" /> <br />
import { ref, watchEffect } from "vue";
const message1 = ref<string>("飛機");
const message2 = ref<string>("火車");
watchEffect((onCleanup) => {
console.log("message11111========>,", message1);
console.log("message22222========>,", message2);
onCleanup(() => {
console.log("onCleanup —————— 下一次運行之前要做的事");
});
});
頁面刷新,首次打?。?/h3>

更改輸入框的值,再次打印:

三、watchEffect 返回值
- 返回值是一個用來
停止偵聽器的函數(shù),調用后不再偵聽 - 需要注意的是:停止時,
不影響最后一次 onCleanup 的執(zhí)行
<input type="text" v-model="message1" /> <br /> <input type="text" v-model="message2" /> <br /> <button @click="stopWatch">停止watchEffect</button>
const stop = watchEffect((onCleanup) => {
console.log("message11111========>,", message1);
console.log("message22222========>,", message2);
onCleanup(() => {
console.log("onCleanup —————— 下一次運行之前要做的事");
});
});
const stopWatch = () => {
stop();
};
頁面刷新,首次打?。?/h3>

更改輸入框的值,再次打?。?/h3>

點擊按鈕 停止偵聽,再次打?。?/h3>

四、options配置
watchEffect 的第二個參數(shù)是配置項:
flush:watch 的執(zhí)行順序pre|post|sync,默認:pre,具體含義可以看上一篇 watch 中的解釋- 一般需要在 dom 更新之后再獲取的情況,可以設置為
post
onTrack用于開發(fā)環(huán)境調試onTrigger用于開發(fā)環(huán)境調試
<input id="ipt" v-model="iptVal" />
const iptVal = ref<string>("aa");
watchEffect(
() => {
// 測試 flush
const spanEle = document.getElementById("ipt");
// flush = pre 時,打印 null; flush = post 時,打印節(jié)點
console.log("spanEle========>,", spanEle);
// 修改 iptVal 測試 onTrack、onTrigger
console.log("iptVal============>", iptVal.value);
},
{
flush: "post",
// 收集依賴時觸發(fā)
onTrack: () => {
debugger;
},
// 更新時觸發(fā)
onTrigger: () => {
debugger;
},
}
);
五、周邊 api
watchPostEffect():watchEffect()使用flush: 'post'選項時的別名watchSyncEffect():watchEffect()使用flush: 'sync'選項時的別名
到此這篇關于Vue3中watchEffect高級偵聽器的具體使用的文章就介紹到這了,更多相關Vue3 watchEffect高級偵聽器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析
- vue3 watch和watchEffect的使用以及有哪些區(qū)別
- Vue3.0監(jiān)聽器watch與watchEffect詳解
- vue3中的watch和watchEffect實例詳解
- 淺談Vue3中watchEffect的具體用法
- Vue3?中?watch?與?watchEffect?區(qū)別及用法小結
- VUE3中watch和watchEffect的用法詳解
- 一文搞懂Vue3中watchEffect偵聽器的使用
- Vue3中watchEffect和watch的基礎應用詳解
- Vue3中watch與watchEffect使用方法詳解
相關文章
vue-element-admin?登陸及目錄權限控制的實現(xiàn)
本文主要介紹了vue-element-admin?登陸及目錄權限控制的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04

