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

Vue3 watchEffect核心用法與原理解析

 更新時間:2025年12月31日 09:29:51   作者:BUG 飼養(yǎng)員  
本文詳細介紹了Vue 3中的watchEffect函數(shù),包括其核心定義、工作原理、核心特性、實戰(zhàn)用法、與watch的區(qū)別、常見避坑點以及核心總結(jié),watchEffect簡化了響應(yīng)式偵聽,自動追蹤依賴并立即執(zhí)行,適用于動態(tài)依賴和簡單副作用場景,感興趣的朋友跟隨小編一起看看吧

一、什么是watchEffect?

watchEffect是Vue3組合式API提供的響應(yīng)式偵聽器,用于監(jiān)聽響應(yīng)式數(shù)據(jù)變化并執(zhí)行副作用邏輯。核心定義:立即執(zhí)行一次副作用函數(shù),自動追蹤函數(shù)內(nèi)訪問的響應(yīng)式數(shù)據(jù),當(dāng)依賴變化時重新執(zhí)行函數(shù),無需手動指定監(jiān)聽源。

它是watch的“簡化版”,專注于“副作用響應(yīng)”,解決了watch需手動指定依賴的繁瑣問題。

二、工作原理

基于Vue3響應(yīng)式系統(tǒng)的ReactiveEffect實現(xiàn):

  • 執(zhí)行watchEffect傳入的副作用函數(shù),此時會觸發(fā)響應(yīng)式數(shù)據(jù)的getter
  • 自動收集函數(shù)內(nèi)訪問的所有響應(yīng)式依賴(依賴追蹤)
  • 當(dāng)依賴變化時,觸發(fā)setter,重新執(zhí)行副作用函數(shù)
  • 組件卸載時,自動停止偵聽,避免內(nèi)存泄漏

三、核心特性

  • 自動收集依賴:無需像watch那樣手動指定監(jiān)聽源,函數(shù)內(nèi)用到的響應(yīng)式數(shù)據(jù)都會被追蹤
  • 立即執(zhí)行:默認首次渲染就執(zhí)行一次,無需配置immediate
  • 自動清理:支持通過onInvalidate清理副作用(如移除事件監(jiān)聽、取消請求)
  • 自動停止:在

四、實戰(zhàn)用法示例

4.1 基礎(chǔ)用法(修改頁面標(biāo)題)

<script setup>
import { ref, watchEffect } from 'vue'
const count = ref(0)
// 自動追蹤count,count變化時重新執(zhí)行
watchEffect(() => {
  document.title = `當(dāng)前計數(shù):${count.value}`
})
</script>

4.2 自動清理副作用

<script setup>
import { watchEffect } from 'vue'
watchEffect((onInvalidate) => {
  // 綁定事件監(jiān)聽
  const handleClick = () => console.log('點擊事件')
  document.addEventListener('click', handleClick)
  // 依賴變化/組件卸載前清理
  onInvalidate(() => {
    document.removeEventListener('click', handleClick)
  })
})
</script>

4.3 手動停止偵聽

<script setup>
import { ref, watchEffect } from 'vue'
const count = ref(0)
// watchEffect返回停止函數(shù)
const stop = watchEffect(() => {
  console.log('count值:', count.value)
})
// 滿足條件時停止偵聽
if (count.value > 5) {
  stop()
}
</script>

五、與watch的核心區(qū)別

對比維度watchEffectwatch
依賴收集自動收集函數(shù)內(nèi)依賴需手動指定監(jiān)聽源
觸發(fā)時機默認立即執(zhí)行默認惰性執(zhí)行(需immediate開啟)
舊值獲取不支持支持(newVal, oldVal)
適用場景動態(tài)依賴、簡單副作用舊值對比、節(jié)流防抖、異步請求

六、常見避坑點

  • 副作用堆積:未清理副作用(如事件監(jiān)聽、定時器),導(dǎo)致多次執(zhí)行后重復(fù)綁定,需用onInvalidate清理
  • 依賴未追蹤:函數(shù)內(nèi)未直接訪問響應(yīng)式數(shù)據(jù)(如嵌套過深未觸發(fā)getter),需確保依賴被直接訪問
  • 異步邏輯問題:異步操作內(nèi)的響應(yīng)式數(shù)據(jù)不會被追蹤,需將依賴寫在同步代碼中

七、核心總結(jié)

watchEffect核心價值是“簡化響應(yīng)式偵聽”,無需手動指定依賴,適合動態(tài)依賴、簡單副作用場景(如DOM操作、頁面標(biāo)題修改、臨時調(diào)試)。記住3個關(guān)鍵點:

  • 自動收集依賴,無需手動配置監(jiān)聽源
  • 首次立即執(zhí)行,依賴變化重新執(zhí)行
  • 必做:用onInvalidate清理副作用,避免內(nèi)存泄漏

與watch互補使用,簡單副作用用watchEffect,需舊值對比、異步節(jié)流用watch,高效駕馭Vue3響應(yīng)式偵聽。

到此這篇關(guān)于Vue3 watchEffect詳解:核心用法與原理剖析的文章就介紹到這了,更多相關(guān)Vue3 watchEffect用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中裝飾器的使用示例詳解

    Vue中裝飾器的使用示例詳解

    Vue?Property?Decorator提供了一些裝飾器,包括@Prop、@Watch、@Emit、@Inject、@Provide、@Model等等,本文主要來和大家講講它們的使用方法,需要的可以參考一下
    2023-07-07
  • Vue 組件事件觸發(fā)和監(jiān)聽實現(xiàn)源碼解析

    Vue 組件事件觸發(fā)和監(jiān)聽實現(xiàn)源碼解析

    這篇文章主要為大家介紹了Vue 組件事件觸發(fā)和監(jiān)聽實現(xiàn)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Vue3中使用i18n,this.$t報錯問題及解決

    Vue3中使用i18n,this.$t報錯問題及解決

    這篇文章主要介紹了Vue3中使用i18n,this.$t報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue+quasar使用遞歸實現(xiàn)動態(tài)多級菜單

    vue+quasar使用遞歸實現(xiàn)動態(tài)多級菜單

    這篇文章主要為大家詳細介紹了vue+quasar使用遞歸實現(xiàn)動態(tài)多級菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue CLI 3.x 自動部署項目至服務(wù)器的方法

    Vue CLI 3.x 自動部署項目至服務(wù)器的方法

    本教程講解的是 Vue-CLI 3.x 腳手架搭建的vue項目, 利用scp2自動化部署到靜態(tài)文件服務(wù)器 Nginx。非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-04-04
  • vue3中pinia的使用方法

    vue3中pinia的使用方法

    Pinia是Vue3的狀態(tài)管理工具,安裝后在入口文件引入,定義store并在組件中使用,本文就來介紹一下vue3中pinia的使用方法,感興趣的可以了解一下
    2024-10-10
  • Vue之自定義事件內(nèi)容分發(fā)詳解

    Vue之自定義事件內(nèi)容分發(fā)詳解

    這篇文章主要為大家介紹了Vue的自定義事件內(nèi)容分發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 解決pycharm雙擊但是無法打開的情況

    解決pycharm雙擊但是無法打開的情況

    這篇文章主要介紹了解決pycharm雙擊但是無法打開的情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue使用axios實現(xiàn)excel文件下載的功能

    vue使用axios實現(xiàn)excel文件下載的功能

    這篇文章主要介紹了vue中使用axios實現(xiàn)excel文件下載的功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • el-date-picker日期選擇限制范圍的實例代碼

    el-date-picker日期選擇限制范圍的實例代碼

    這篇文章主要介紹了el-date-picker日期選擇限制范圍,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論

府谷县| 富宁县| 鸡西市| 红桥区| 双辽市| 沙河市| 逊克县| 通州市| 望江县| 抚松县| 七台河市| 邹城市| 从江县| 双柏县| 南通市| 乌兰浩特市| 曲水县| 邢台市| 华池县| 皋兰县| 英山县| 宝丰县| 崇仁县| 邓州市| 德庆县| 封丘县| 延川县| 象州县| 邹城市| 白银市| 石渠县| 化隆| 和平县| 青海省| 宁陵县| 龙江县| 康定县| 海原县| 灌南县| 金门县| 万载县|