vue3 watch和watchEffect的使用以及有哪些區(qū)別
1.watch偵聽(tīng)器
引入watch
import { ref, reactive, watch, toRefs } from 'vue'
對(duì)基本數(shù)據(jù)類型進(jìn)行監(jiān)聽(tīng)----- watch特性:
1.具有一定的惰性lazy 第一次頁(yè)面展示的時(shí)候不會(huì)執(zhí)行,只有數(shù)據(jù)變化的時(shí)候才會(huì)執(zhí)行
2.參數(shù)可以拿到當(dāng)前值和原始值
3.可以偵聽(tīng)多個(gè)數(shù)據(jù)的變化,用一個(gè)偵聽(tīng)起承載
setup() { const name = ref('leilei') watch(name, (curVal, prevVal) => { console.log(curVal, prevVal) }) } template: `Name: <input v-model="name" />`
對(duì)引用類型進(jìn)行監(jiān)聽(tīng)-----
setup() { const nameObj = reactive({name: 'leilei', englishName: 'bob'}) 監(jiān)聽(tīng)一個(gè)數(shù)據(jù) watch(() => nameObj.name, (curVal, prevVal) => { console.log(curVal, prevVal) }) 監(jiān)聽(tīng)多個(gè)數(shù)據(jù) watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => { console.log(curName, curEng, '----', prevName, curEng) setTimeout(() => { stop1() }, 5000) }) const { name, englishName } = toRefs(nameObj) } template: `Name: <input v-model="name" /> englishName: <input v-model="englishName" />`
2.watchEffect
沒(méi)有過(guò)多的參數(shù) 只有一個(gè)回調(diào)函數(shù)
1.立即執(zhí)行,沒(méi)有惰性,頁(yè)面的首次加載就會(huì)執(zhí)行。
2.自動(dòng)檢測(cè)內(nèi)部代碼,代碼中有依賴 便會(huì)執(zhí)行
3.不需要傳遞要偵聽(tīng)的內(nèi)容 會(huì)自動(dòng)感知代碼依賴,不需要傳遞很多參數(shù),只要傳遞一個(gè)回調(diào)函數(shù)
4.不能獲取之前數(shù)據(jù)的值 只能獲取當(dāng)前值
5.一些=異步的操作放在這里會(huì)更加合適
watchEffect(() => { console.log(nameObj.name) })
偵聽(tīng)器的取消 watch 取消偵聽(tīng)器用法相同
const stop = watchEffect(() => { console.log(nameObj.name) setTimeout(() => { stop() }, 5000) }) const stop1 = watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => { console.log(curName, curEng, '----', prevName, curEng) setTimeout(() => { stop1() }, 5000) })
watch也可以變?yōu)榉嵌栊缘?立即執(zhí)行的 添加第三個(gè)參數(shù) immediate: true
watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => { console.log(curName, curEng, '----', prevName, curEng) setTimeout(() => { stop1() }, 5000) }, { immediate: true })
以上就是vue3 watch和watchEffect的使用以及有哪些區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于vue3 watch和watchEffect的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析
- Vue3.0監(jiān)聽(tīng)器watch與watchEffect詳解
- vue3中的watch和watchEffect實(shí)例詳解
- 淺談Vue3中watchEffect的具體用法
- Vue3?中?watch?與?watchEffect?區(qū)別及用法小結(jié)
- Vue3中watchEffect高級(jí)偵聽(tīng)器的具體使用
- VUE3中watch和watchEffect的用法詳解
- 一文搞懂Vue3中watchEffect偵聽(tīng)器的使用
- Vue3中watchEffect和watch的基礎(chǔ)應(yīng)用詳解
- Vue3中watch與watchEffect使用方法詳解
相關(guān)文章
如何實(shí)現(xiàn)一個(gè)簡(jiǎn)易版的vuex持久化工具
這篇文章主要介紹了實(shí)現(xiàn)一個(gè)簡(jiǎn)易版的vuex持久化工具,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Vue3項(xiàng)目中父子組件之間互相傳值、傳遞方法詳細(xì)介紹
組件傳值問(wèn)題是Vue開(kāi)發(fā)中非常重要的一個(gè)話題,涉及到父子組件和非父子組件之間的傳值問(wèn)題,這篇文章主要介紹了Vue3項(xiàng)目中父子組件之間互相傳值、傳遞方法的相關(guān)資料,需要的朋友可以參考下2025-05-05淺談vuex的基本用法和mapaction傳值問(wèn)題
今天小編就為大家分享一篇淺談vuex的基本用法和mapaction傳值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vuex如何在非組件中調(diào)用mutations方法
這篇文章主要介紹了vuex如何在非組件中調(diào)用mutations方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03