VUE3中watch和watchEffect的用法詳解
watch和watchEffect都是監(jiān)聽器,但在寫法和使用上有所區(qū)別。
watch在監(jiān)聽 ref 類型時和監(jiān)聽reactive類型時watch函數(shù)的寫發(fā)有所不一樣。
watch在監(jiān)聽 ref 類型時:
<script> import {ref, watch} from 'vue' export default { ? ? setup() {? ? ? ? ? const state = ref(0) ? ? ? ? watch(state, (newValue, oldValue) => { ? ? ? ? ? console.log(`原值為${oldValue}`) ? ? ? ? ? console.log(`新值為${newValue}`) ? ? ? ? ? /* 1秒后打印結(jié)果: ? ? ? ? ? ? ? ? ? 原值為0 ? ? ? ? ? ? ? ? ? 新值為1 ? ? ? ? ? */ ? ? ? ? }) ? ? ? ? // 1秒后將state值+1 ? ? ? ? setTimeout(() => { ? ? ? ? ? state.value ++ ? ? ? ? }, 1000) ? ? } } </script>
watch在監(jiān)聽 reactive類型時:
<script> import {reactive, watch} from 'vue' export default { ? ? setup() {? ? ? ? ? const state = reactive({count: 0}) ? ? ? ? watch(() => state.count, (newValue, oldValue) => { ? ? ? ? ? console.log(`原值為${oldValue}`) ? ? ? ? ? console.log(`新值為${newValue}`) ? ? ? ? ? /* 1秒后打印結(jié)果: ? ? ? ? ? ? ? ? ? 原值為0 ? ? ? ? ? ? ? ? ? 新值為1 ? ? ? ? ? */ ? ? ? ? }) ? ? ? ? // 1秒后將state.count的值+1 ? ? ? ? setTimeout(() => { ? ? ? ? ? state.count ++ ? ? ? ? }, 1000) ? ? } } </script>
watchEffect 它與 watch 的區(qū)別主要有以下幾點(diǎn):
- 不需要手動傳入依賴
- 每次初始化時會執(zhí)行一次回調(diào)函數(shù)來自動獲取依賴
- 無法獲取到原值,只能得到變化后的值
<script> import {reactive, watchEffect} from 'vue' export default { ? ? setup() {? ? ? ? ? ? const state = reactive({ count: 0, name: 'zs' }) ? ? ? ? ? watchEffect(() => { ? ? ? ? ? console.log(state.count) ? ? ? ? ? console.log(state.name) ? ? ? ? ? /* ?初始化時打?。? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? zs ? ? ? ? ? ? 1秒后打印: ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ls ? ? ? ? ? */ ? ? ? ? ? }) ? ? ? ? ? setTimeout(() => { ? ? ? ? ? ? state.count ++ ? ? ? ? ? ? state.name = 'ls' ? ? ? ? ? }, 1000) ? ? } } </script>
根據(jù)以上特征,我們可以自行選擇使用哪一個監(jiān)聽器
另:watch和watchEffect監(jiān)聽器在同一個頁面中都可以使用多次,對于分別監(jiān)聽多個變量的時候
到此這篇關(guān)于VUE3中watch和watchEffect的用法詳解的文章就介紹到這了,更多相關(guān)VUE3 watch和watchEffect內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析
- vue3 watch和watchEffect的使用以及有哪些區(qū)別
- Vue3.0監(jiān)聽器watch與watchEffect詳解
- vue3中的watch和watchEffect實(shí)例詳解
- 淺談Vue3中watchEffect的具體用法
- Vue3?中?watch?與?watchEffect?區(qū)別及用法小結(jié)
- Vue3中watchEffect高級偵聽器的具體使用
- 一文搞懂Vue3中watchEffect偵聽器的使用
- Vue3中watchEffect和watch的基礎(chǔ)應(yīng)用詳解
- Vue3中watch與watchEffect使用方法詳解
相關(guān)文章
Vue+mui實(shí)現(xiàn)圖片的本地緩存示例代碼
這篇文章主要介紹了Vue+mui實(shí)現(xiàn)圖片的本地緩存的實(shí)例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-05-05vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件
最近項(xiàng)目中需要在線預(yù)覽WORD文檔,所以給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件的相關(guān)資料,需要的朋友可以參考下2023-03-03vue.js在標(biāo)簽屬性中插入變量參數(shù)的方法
這篇文章主要介紹了vue.js在標(biāo)簽屬性中插入變量參數(shù)的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03在 Vue3 中如何使用 styled-components
styled-components 的官方 Vue 版本目前已多年沒有更新,而且只支持到 Vue2,那么,在 Vue3 中怎么才能使用到 styled-components 呢,下面給大家介紹在 Vue3 中使用 styled-components的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2024-05-05如何在vue項(xiàng)目中使用UEditor--plus
UEditor是由百度web前端研發(fā)部開發(fā)的所見即所得的開源富文本編輯器,這篇文章主要介紹了如何在vue項(xiàng)目中使用UEditor--plus?,需要的朋友可以參考下2022-08-08使用electron將vue-cli項(xiàng)目打包成exe的方法
今天小編就為大家分享一篇使用electron將vue-cli項(xiàng)目打包成exe的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09