最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用

 更新時(shí)間:2024年01月21日 11:54:17   作者:Unique·Blue  
Vue3中新增了一種特殊的監(jiān)聽(tīng)器watchEffect,本文主要介紹了Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

示例均采用 <script setup>,且包含 typescript 的基礎(chǔ)用法

前言

Vue3 中新增了一種特殊的監(jiān)聽(tīng)器 watchEffect,它的類(lèi)型是:

function watchEffect(
  effect: (onCleanup: OnCleanup) => void,
  options?: WatchEffectOptions
): StopHandle

下面通過(guò)實(shí)例來(lái)理解下它的用法

一、簡(jiǎn)單使用

  • 第一個(gè)參數(shù)就是要運(yùn)行的 副作用函數(shù) effect
  • 函數(shù)內(nèi) 用到哪些數(shù)據(jù) 才會(huì) 監(jiān)聽(tīng)哪些數(shù)據(jù)
  • 且會(huì) 立刻執(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>("飛機(jī)");
const message2 = ref<string>("火車(chē)");

watchEffect(() => {
  console.log("message1========>,", message1);
  // 不使用 message2 就不會(huì)監(jiān)聽(tīng) message2
  // console.log("message2========>,", message2);
});

二、副作用 effect 的參數(shù)

  • effect 的參數(shù) 也是一個(gè) 函數(shù),用來(lái) 注冊(cè)清理回調(diào)。
  • 清理回調(diào) 會(huì)在 該副作用下一次執(zhí)行前被調(diào)用,可以用來(lái)清理無(wú)效的副作用,例如等待中的異步請(qǐng)求
<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
import { ref, watchEffect } from "vue";

const message1 = ref<string>("飛機(jī)");
const message2 = ref<string>("火車(chē)");

watchEffect((onCleanup) => {
  console.log("message11111========>,", message1);
  console.log("message22222========>,", message2);

  onCleanup(() => {
    console.log("onCleanup —————— 下一次運(yùn)行之前要做的事");
  });
});

頁(yè)面刷新,首次打?。?/h3>

在這里插入圖片描述

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

在這里插入圖片描述

三、watchEffect 返回值

  • 返回值是一個(gè)用來(lái) 停止偵聽(tīng)器 的函數(shù),調(diào)用后不再偵聽(tīng)
  • 需要注意的是:停止時(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 —————— 下一次運(yùn)行之前要做的事");
  });
});

const stopWatch = () => {
  stop();
};

頁(yè)面刷新,首次打?。?/h3>

在這里插入圖片描述

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

點(diǎn)擊按鈕 停止偵聽(tīng),再次打印:

四、options配置

watchEffect 的第二個(gè)參數(shù)是配置項(xiàng):

  • flush:watch 的執(zhí)行順序
    • pre | post | sync ,默認(rèn):pre,具體含義可以看上一篇 watch 中的解釋
    • 一般需要在 dom 更新之后再獲取的情況,可以設(shè)置為 post
  • onTrack 用于開(kāi)發(fā)環(huán)境調(diào)試
  • onTrigger 用于開(kāi)發(fā)環(huán)境調(diào)試
<input id="ipt" v-model="iptVal" />
const iptVal = ref<string>("aa");

watchEffect(
  () => {
    // 測(cè)試 flush
    const spanEle = document.getElementById("ipt");
    // flush = pre 時(shí),打印 null; flush = post 時(shí),打印節(jié)點(diǎn)
    console.log("spanEle========>,", spanEle); 

    // 修改 iptVal 測(cè)試 onTrack、onTrigger
    console.log("iptVal============>", iptVal.value);
  },
  {
    flush: "post",
   	// 收集依賴(lài)時(shí)觸發(fā)
    onTrack: () => {
      debugger;
    },
    // 更新時(shí)觸發(fā)
    onTrigger: () => {
      debugger;
    },
  }
);

五、周邊 api

  • watchPostEffect()watchEffect() 使用 flush: 'post' 選項(xiàng)時(shí)的別名
  • watchSyncEffect()watchEffect() 使用 flush: 'sync' 選項(xiàng)時(shí)的別名

到此這篇關(guān)于Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用的文章就介紹到這了,更多相關(guān)Vue3 watchEffect高級(jí)偵聽(tīng)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 前端XSS攻擊場(chǎng)景詳解與Vue.js處理XSS的方法(vue-xss)

    前端XSS攻擊場(chǎng)景詳解與Vue.js處理XSS的方法(vue-xss)

    這篇文章主要給大家介紹了關(guān)于前端XSS攻擊場(chǎng)景與Vue.js使用vue-xss處理XSS的方法,介紹了實(shí)際工作中渲染數(shù)據(jù)時(shí)遇到XSS攻擊時(shí)的防范措施,以及解決方案,需要的朋友可以參考下
    2024-02-02
  • vue組件生命周期鉤子使用示例詳解

    vue組件生命周期鉤子使用示例詳解

    這篇文章主要為大家介紹了vue組件生命周期鉤子使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Vue 列表上下過(guò)渡效果的實(shí)例代碼

    Vue 列表上下過(guò)渡效果的實(shí)例代碼

    最近有個(gè)需求,一個(gè)列表上下移動(dòng)要有簡(jiǎn)單過(guò)渡效果。本文通過(guò)實(shí)例代碼給大家介紹Vue 列表上下過(guò)渡效果,需要的朋友可以參考下
    2019-06-06
  • Vue編寫(xiě)自定義Plugin詳解

    Vue編寫(xiě)自定義Plugin詳解

    這篇文章主要介紹了Vue編寫(xiě)自定義Plugin詳解,在Vue開(kāi)發(fā)中,我們經(jīng)常需要使用一些第三方庫(kù)或功能性模塊,Vue插件就是一種將這些庫(kù)或模塊集成到Vue應(yīng)用中的方式,插件是Vue.js提供的一種機(jī)制,用于擴(kuò)展Vue的功能,需要的朋友可以參考下
    2023-08-08
  • vue 2.0 購(gòu)物車(chē)小球拋物線(xiàn)的示例代碼

    vue 2.0 購(gòu)物車(chē)小球拋物線(xiàn)的示例代碼

    本篇文章主要介紹了vue 2.0 購(gòu)物車(chē)小球拋物線(xiàn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 詳解如何實(shí)現(xiàn)Vue組件的動(dòng)態(tài)綁定

    詳解如何實(shí)現(xiàn)Vue組件的動(dòng)態(tài)綁定

    Vue.js 是一個(gè)漸進(jìn)式框架,用于構(gòu)建用戶(hù)界面,在開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要根據(jù)不同的條件動(dòng)態(tài)顯示組件,在本文中,我將詳細(xì)介紹如何實(shí)現(xiàn)Vue組件的動(dòng)態(tài)綁定,提供示例代碼,以幫助你更深入地理解這個(gè)概念,需要的朋友可以參考下
    2024-11-11
  • 關(guān)于element el-input的autofocus失效的問(wèn)題及解決

    關(guān)于element el-input的autofocus失效的問(wèn)題及解決

    這篇文章主要介紹了關(guān)于element el-input的autofocus失效的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 從vue源碼解析Vue.set()和this.$set()

    從vue源碼解析Vue.set()和this.$set()

    這篇文章主要介紹了從vue源碼看Vue.set()和this.$set()的相關(guān)知識(shí),我們先來(lái)從Vue提供的Vue.set()和this.$set()這兩個(gè)api看看它內(nèi)部是怎么實(shí)現(xiàn)的。感興趣的朋友跟隨小編一起看看吧
    2018-08-08
  • Vue-CLI多頁(yè)分目錄打包的步驟記錄

    Vue-CLI多頁(yè)分目錄打包的步驟記錄

    這篇文章主要給大家介紹了關(guān)于Vue-CLI多頁(yè)分目錄打包的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 解決Ant Design Modal內(nèi)嵌Form表單initialValue值不動(dòng)態(tài)更新問(wèn)題

    解決Ant Design Modal內(nèi)嵌Form表單initialValue值不動(dòng)態(tài)更新問(wèn)題

    這篇文章主要介紹了解決Ant Design Modal內(nèi)嵌Form表單initialValue值不動(dòng)態(tài)更新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10

最新評(píng)論

泌阳县| 长岛县| 明溪县| 宾川县| 佳木斯市| 高陵县| 柞水县| 阿合奇县| 左权县| 固阳县| 阿拉善右旗| 静安区| 湟源县| 元谋县| 民乐县| 名山县| 彭山县| 孝昌县| 福建省| 抚远县| 博罗县| 广德县| 长兴县| 齐齐哈尔市| 鸡西市| 大名县| 会泽县| 平度市| 广德县| 大理市| 孝义市| 昭苏县| 平安县| 巢湖市| 台江县| 余姚市| 尼木县| 桓仁| 屏山县| 青河县| 长宁县|