久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

一文了解Vue3中的watchEffect,聊聊其應用場景!

本篇文章帶大家了解一下Vue3中的watchEffect,介紹一下它的副作用,并聊聊它可以做什么事情,希望對大家有所幫助!

一文了解Vue3中的watchEffect,聊聊其應用場景!

watchEffect,它立即執行傳入的一個函數,同時響應式追蹤其依賴,并在其依賴變更時重新運行該函數。(學習視頻分享:vue視頻教程)

換句話說:watchEffect相當于將watch 的依賴源和回調函數合并,當任何你有用到的響應式依賴更新時,該回調函數便會重新執行。不同于 watchwatchEffect 的回調函數會被立即執行(即 { immediate: true }

此文主要講述怎樣利用清除副作用使我們的代碼更加優雅~

watchEffect的副作用

什么是副作用(side effect),簡單的說副作用就是執行某種操作,如對外部可變數據或變量的修改,外部接口的調用等。watchEffect的回調函數就是一個副作用函數,因為我們使用watchEffect就是偵聽到依賴的變化后執行某些操作。

當執行副作用函數時,它勢必會對系統帶來一些影響,如在副作用函數里執行了一個定時器setInterval,因此我們必須處理副作用。Vue3watchEffect偵聽副作用傳入的函數可以接收一個 onInvalidate 函數作為入參,用來注冊清理失效時的回調。當以下情況發生時,這個失效回調會被觸發:

  • 副作用即將重新執行時(即依賴的值改變)
  • 偵聽器被停止 (通過顯示調用返回值停止偵聽,或組件被卸載時隱式調用了停止偵聽)
import { watchEffect, ref } from 'vue'  const count = ref(0) watchEffect((onInvalidate) => {   console.log(count.value)   onInvalidate(() => {     console.log('執行了onInvalidate')   }) })  setTimeout(()=> {   count.value++ }, 1000)

上述代碼打印的順序為: 0 -> 執行了onInvalidate,最后執行 -> 1

分析:初始化時先打印count的值0, 然后由于定時器把count的值更新為1, 此時副作用即將重新執行,因此onInvalidate的回調函數會被觸發,打印執行了onInvalidate,然后執行了副作用函數,打印count的值1

import { watchEffect, ref } from 'vue'  const count = ref(0) const stop = watchEffect((onInvalidate) => {   console.log(count.value)   onInvalidate(() => {     console.log('執行了onInvalidate')   }) })  setTimeout(()=> {   stop() }, 1000)

上述代碼:當我們顯示執行stop函數停止偵聽,此時也會觸發onInvalidate的回調函數。同樣,watchEffect所在的組件被卸載時會隱式調用stop函數停止偵聽,故也能觸發onInvalidate的回調函數。

watchEffect的應用

利用watchEffect的非惰性執行,以及傳入的onInvalidate 函數,我們可以做什么事情了?

場景一:平時我們定義一個定時器,或者監聽某個事件,我們需要在mounted生命周期鉤子函數內定義或者注冊,然后組件銷毀之前在beforeUnmount鉤子函數里清除定時器或取消監聽。這樣做我們的邏輯被分散在兩個生命周期,不利于維護和閱讀。

如果我利用watchEffect,創造和銷毀邏輯放在了一起,此時代碼更加優雅易讀~

// 定時器注冊和銷毀 watchEffect((onInvalidate) => {   const timer = setInterval(()=> {     // ...   }, 1000)   onInvalidate(() => clearInterval(timer)) })  const handleClick = () => {  // ... } // dom的監聽和取消監聽 onMounted(()=>{   watchEffect((onInvalidate) => {     document.querySelector('.btn').addEventListener('click', handleClick, false)     onInvalidate(() => document.querySelector('.btn').removeEventListener('click', handleClick))   }) })

場景二:利用watchEffect作一個防抖節流(如取消請求)

const id = ref(13) watchEffect(onInvalidate => {    // 異步請求   const token = performAsyncOperation(id.value)   // 如果id頻繁改變,會觸發失效函數,取消之前的接口請求   onInvalidate(() => {     // id has changed or watcher is stopped.     // invalidate previously pending async operation     token.cancel()   }) })

……

當然watchEffect還能做很多事情,比如打開一個修改的modal彈窗,如果檢測到id變化,我們可以在onInvalidate函數內,重置初始參數…這里只是一個拋磚引玉的作用,望大家多多發掘~

(學習視頻分享:web前端開發、編程基礎視頻)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲一区二区三区在线免费| 欧美在线亚洲| 日韩精彩视频在线观看| 最近国产精品视频| 色8久久久久| 国产乱码精品一区二区亚洲| 亚洲人成亚洲精品| 日本伊人午夜精品| 欧美亚洲二区| 毛片不卡一区二区| 超碰超碰人人人人精品| 欧美亚洲国产激情| 午夜宅男久久久| 日本午夜免费一区二区 | 免费人成网站在线观看欧美高清| 香蕉久久夜色精品国产| 日本不卡一区二区| 久久不见久久见免费视频7| 欧美国产免费| 亚洲精品一级二级| 鲁大师影院一区二区三区| 日韩精品社区| 久久久国产精品网站| 麻豆精品蜜桃| 日韩精品一二三| 久久99精品久久久野外观看| 亚洲女同av| 亚洲欧美不卡| 国产精品亚洲人成在99www| 在线天堂资源www在线污| 91九色精品| 日本午夜精品久久久久| 麻豆视频在线看| 美女精品在线| 美女国产一区二区三区| 91精品一区国产高清在线gif| 免费在线成人网| 久久一区欧美| 欧美精选一区二区三区| 欧美日韩一视频区二区| 深夜视频一区二区| 三级久久三级久久久| 精品国产麻豆| 日韩视频在线一区二区三区| 国产日韩精品视频一区二区三区| 黄毛片在线观看| 久久都是精品| 国产不卡精品| 亚洲欧美日本日韩| 国产高清视频一区二区| 国产高清一区| 久久久久97| 久久亚洲欧洲| 日韩电影免费网址| 欧美日韩一视频区二区| 欧美a级一区| 欧美激情久久久久久久久久久| 天堂网在线观看国产精品| 国产精品超碰| 男女男精品视频网| 久久久一本精品| 国产日产精品_国产精品毛片| 亚洲香蕉网站| 国产精品一线| 在线午夜精品| 国产拍在线视频| 青青伊人久久| 国产亚洲欧洲| 中文字幕在线视频久| 日韩三级一区| 午夜av一区| 欧美激情在线精品一区二区三区| 99国产精品视频免费观看一公开| 国产成人久久精品一区二区三区| 亚洲精品影视| 狠狠久久婷婷| 在线亚洲人成| 久久精品国产在热久久| 久热精品在线| 精品国模一区二区三区| 国产免费av国片精品草莓男男 | 免费精品视频在线| 久久久五月天| 国产成人黄色| 免费日韩一区二区三区| 日韩精品一区二区三区中文在线 | 精品91福利视频| 91大神在线观看线路一区| 欧美午夜精彩| 久久uomeier| 久久xxx视频| 欧美偷窥清纯综合图区| 一区二区91| 亚洲欧美日韩国产一区二区| 999国产精品视频| 国产在线观看www| 久久一区视频| 你懂的国产精品| 国产精品一区二区三区www| 日本亚洲三级在线| 亚洲伊人精品酒店| 亚洲深爱激情| 在线亚洲自拍| 精品一区在线| 欧美搞黄网站| 99精品小视频| 久久高清精品| 日韩精品免费一区二区在线观看| 精品国产乱码久久久久久1区2匹| 国产调教一区二区三区| 日本在线不卡视频一二三区| 丝袜亚洲另类欧美| 国产日韩专区| 亚洲综合国产| 天堂av在线一区| 亚洲一区二区三区四区五区午夜| 婷婷中文字幕一区| 国产视频欧美| 久久国产99| 香蕉久久夜色精品国产| 天堂成人免费av电影一区| 亚洲欧美日韩精品一区二区| 亚洲欧美日韩精品一区二区| 久久国产88| 亚洲精品乱码| 欧美亚洲人成在线| 国产精久久久| 最新中文字幕在线播放| 亚洲精品一区三区三区在线观看| 热三久草你在线| 久久精品国产大片免费观看| 婷婷综合六月| 不卡中文字幕| 免费精品视频最新在线| 久久国产精品毛片| 亚洲区欧美区| 国产免费久久| 鲁鲁在线中文| 影院欧美亚洲| 亚洲精品九九| 久久超碰99| 亚洲天堂免费电影| 红桃视频亚洲| 日韩av网站在线免费观看| 久久的色偷偷| 视频福利一区| 久久亚洲不卡| 国产美女久久| 亚洲播播91| 波多野结衣一区| 日韩中出av| 国产一区二区三区亚洲| 久久精品亚洲人成影院| 日本欧美在线看| 国产精品videossex| 久久三级视频| 午夜久久av| 国产一区二区三区精品在线观看 | 亚洲资源av| 国产乱子精品一区二区在线观看 | 日本一二区不卡| 91精品福利| 国产精品一区亚洲| 精品欧美一区二区三区在线观看| 亚洲欧美日韩视频二区| 国产伦理久久久久久妇女| 国产综合色区在线观看| 在线看片一区| 精品国产成人| 午夜在线视频观看日韩17c| 国产精区一区二区| 激情综合网站| 久久不卡国产精品一区二区| 精品免费av在线| 日韩精品一区二区三区av| 六月婷婷综合| 日韩一区二区三区在线看| 国产盗摄——sm在线视频| 亚洲一区欧美| 久久久久久自在自线| 午夜在线一区二区| 精品国产亚洲日本| 午夜在线播放视频欧美| 精品视频自拍| 中文无码久久精品| 国产伦久视频在线观看| 日韩欧乱色一区二区三区在线| av资源亚洲| 亚洲欧洲日韩精品在线| 成人日韩在线| 7777精品| 在线一区视频| 欧美男人天堂| 国产精品亚洲四区在线观看| 好吊日精品视频| 鲁鲁在线中文| 国产精品香蕉| 亚洲无线观看| 久久一区二区三区电影| 免费一区二区三区在线视频|