vue3中的watch()的用法和具體作用
Vue.js 3是一款流行的JavaScript框架,它提供了watch()
方法來監(jiān)聽組件數(shù)據(jù)的變化。在本文中,我們將詳細(xì)介紹Vue.js 3中watch()的用法和具體作用。
一、Vue3中watch()的用法
在Vue.js 3中,watch()方法可以用于監(jiān)聽單個(gè)數(shù)據(jù)、多個(gè)數(shù)據(jù)以及獲取到新舊值的情況。以下是watch()的基本使用方式:
import { watch, ref } from 'vue' export default { setup() { const count = ref(0) watch(count, (newVal, oldVal) => { console.log(`New: ${newVal}, Old: ${oldVal}`) }) return { count } } }
在上面的代碼中,我們定義了一個(gè)ref類型的變量count
,并使用watch()
方法監(jiān)聽count
變量的變化。當(dāng)count
變量的值發(fā)生變化時(shí),watch()
回調(diào)函數(shù)將被執(zhí)行,并將新值和舊值作為參數(shù)傳遞給該函數(shù)。
除了單個(gè)變量的監(jiān)聽,watch()
還可以監(jiān)聽多個(gè)變量的變化,以及獲取舊值/新值的情況。
多個(gè)變量的監(jiān)聽:
watch( [count1, count2], ([newCount1, newCount2], [oldCount1, oldCount2]) => { console.log( `New count1: ${newCount1}, Old count1: ${oldCount1}, New count2: ${newCount2}, Old count2: ${oldCount2}` ) } )
獲取新舊值:
watch( [count1, count2], ([newCount1, newCount2], [oldCount1, oldCount2]) => { console.log(`New count1: ${newCount1}, Old count1: ${oldCount1}`) console.log(`New count2: ${newCount2}, Old count2: ${oldCount2}`) }, { deep: true } )
在這個(gè)例子中,我們傳遞了一個(gè)選項(xiàng)對(duì)象,用于開啟深層監(jiān)聽。這種方式可以使watch()監(jiān)聽的變量案例更加龐大復(fù)雜。
二、Vue3中watch()的作用
watch()
方法在Vue.js 3中有著非常重要的作用,它可以幫助我們監(jiān)聽數(shù)據(jù)的變化,并按需執(zhí)行一些任務(wù)。
比如,在前端開發(fā)中經(jīng)常遇到監(jiān)聽用戶輸入框的情況,當(dāng)用戶輸入內(nèi)容變化時(shí),我們需要實(shí)時(shí)更新展示相關(guān)的內(nèi)容。比如,當(dāng)輸入框內(nèi)容為空時(shí),隱藏某個(gè)組件,當(dāng)輸入框內(nèi)容不為空時(shí),顯示某個(gè)組件。
import { watch, ref } from 'vue' export default { setup() { const userInput = ref('') const showComponent = ref(false) watch(userInput, (newVal) => { if (newVal === '') { showComponent.value = false } else { showComponent.value = true } }) return { userInput, showComponent } } }
在上面的代碼中,我們監(jiān)聽了用戶輸入框的變化,并根據(jù)用戶輸入框的值展示/隱藏組件。
watch()
方法還可以實(shí)現(xiàn)更多復(fù)雜的功能,比如異步獲取數(shù)據(jù)并在數(shù)據(jù)更新時(shí)重新渲染頁面。
三、Vue3中新引入的監(jiān)聽方法watchEffect
在Vue.js 3中,watchEffect()
方法被引入。watchEffect()
方法與watch()
方法的行為類似,但沒有提供舊值和新值的訪問。它可以在數(shù)據(jù)變化時(shí)自動(dòng)執(zhí)行回調(diào)函數(shù)。
import { watchEffect, ref } from 'vue' export default { setup() { const count = ref(0) watchEffect(() => { console.log(`Count is: ${count.value}`) }) return { count } } }
在上面的代碼中,我們定義了一個(gè)count
變量,并使用watchEffect
()方法監(jiān)聽該變量的變化。每當(dāng)count
變量的值發(fā)生變化時(shí),watchEffect()
回調(diào)函數(shù)將被執(zhí)行。
四、總結(jié)
在本文中,我們?cè)敿?xì)介紹了Vue.js 3中watch()
方法的用法和作用。watch()
方法是Vue3框架中非常重要的一部分,它可以幫助我們監(jiān)聽組件數(shù)據(jù)的變化,并按需執(zhí)行一些任務(wù)。通過合理和熟練使用watch()
方法,開發(fā)者可以更加高效地完成前端開發(fā)工作。
到此這篇關(guān)于vue3中的watch()的用法和具體作用的文章就介紹到這了,更多相關(guān)vue3中的watch()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue使用vant中的checkbox實(shí)現(xiàn)全選功能
這篇文章主要為大家詳細(xì)介紹了vue使用vant中的checkbox實(shí)現(xiàn)全選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11如何利用vue-cli監(jiān)測webpack打包與啟動(dòng)時(shí)長
這篇文章主要給大家介紹了關(guān)于如何利用vue-cli監(jiān)測webpack打包與啟動(dòng)時(shí)長的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02vue.config.js使用代理配置真實(shí)請(qǐng)求url方式
這篇文章主要介紹了vue.config.js使用代理配置真實(shí)請(qǐng)求url方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10利用Vue模擬實(shí)現(xiàn)element-ui的分頁器效果
這篇文章主要為大家詳細(xì)介紹了如何利用Vue模擬實(shí)現(xiàn)element-ui的分頁器效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-11-11Vue2.5學(xué)習(xí)筆記之如何在項(xiàng)目中使用和配置Vue
這篇文章主要介紹了Vue2.5學(xué)習(xí)筆記之如何在項(xiàng)目中使用和配置Vue的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09vuejs 制作背景淡入淡出切換動(dòng)畫的實(shí)例
今天小編就為大家分享一篇vuejs 制作背景淡入淡出切換動(dòng)畫的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09Vue+Element UI實(shí)現(xiàn)概要小彈窗的全過程
彈窗效果是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Vue+Element UI實(shí)現(xiàn)概要小彈窗的相關(guān)資料,需要的朋友可以參考下2021-05-05vue-cli3.0修改打包后的文件名和文件地址,打包后本地運(yùn)行報(bào)錯(cuò)解決
這篇文章主要介紹了vue-cli3.0修改打包后的文件名和文件地址,打包后本地運(yùn)行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04