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ū)別主要有以下幾點:
- 不需要手動傳入依賴
- 每次初始化時會執(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實例詳解
- 淺談Vue3中watchEffect的具體用法
- Vue3?中?watch?與?watchEffect?區(qū)別及用法小結(jié)
- 一文搞懂Vue3中watchEffect偵聽器的使用
- Vue3中watchEffect和watch的基礎(chǔ)應(yīng)用詳解
- Vue3中的?computed,watch,watchEffect的使用方法
- Vue3中watch和watchEffect的區(qū)別及使用技巧總結(jié)
相關(guān)文章
vue.js實現(xiàn)帶日期星期的數(shù)字時鐘功能示例
這篇文章主要介紹了vue.js實現(xiàn)帶日期星期的數(shù)字時鐘功能,涉及vue.js基于定時器的日期時間運算與數(shù)值操作相關(guān)使用技巧,需要的朋友可以參考下2018-08-08
使用Vue中 v-for循環(huán)列表控制按鈕隱藏顯示功能
這篇文章主要介紹了使用Vue中 v-for循環(huán)列表控制按鈕隱藏顯示功能,需要的朋友可以參考下2019-04-04

