第三十九篇:Vue3 watch(ref和reactive的監視)


好家伙,

1.vue2中的watch是調用配置項,(只能寫一個)

   vue3中的watch是一個函數(可以寫很多個)

 

2.watch一些用法:

這里是定義的數據

set up(){ let sum =ref(0) let msg = ref('你好啊') let person = reactive({ name:'張三' job:{ j1{ salary:20 } } }) }
return{
..........
}

 

用法一:監視ref所定義的一個響應式數據

watch(sum,(newValue,oldvalue)=> {console.log('sum變了',newValue,oldvalue)}, {immediate:true})

 

 

用法二:監視ref所定義的多個對象

watch([sum,msg],(newValue,oldvalue)=> {console.log('sum變了',newValue,oldvalue)}, {immediate:true})

 

 

用法三:監視reactive監視reative所定義的一個響應式數據的全部屬性

注意:1.此處無法獲得正確的oldValue,對象拿不到oldVuale

   2.默認開啟深度監視?關不掉,強制開啟了深度監視(deep配置無效)

watch(person,(newValue,oldvalue)=> {console.log('sum變了',newValue,oldvalue)}, {deep:false})

 

用法四:監視reactive監視reative所定義的一個響應式數據的某個屬性   (寫成函數)

watch(()=>person.name,(newValue,oldvalue)=>
{console.log('sum變了',newValue,oldvalue)},)

 

用法五:監視reactive監視reative所定義的一個響應式數據的某些屬性

watch([()=>person.name,()=>person.age],(newValue,oldvalue)=> 
{console.log('sum變了',newValue,oldvalue)})

 

特殊情況:

watch(()=>person.name,(newValue,oldvalue)=> {console.log('sum變了',newValue,oldvalue)}, {deep:true})

此處監視得失reactive定義的對象中的某個屬性的對象 .

這里是普通對象了,deep配置又能用了

 

3.小結:1.監視reactive定義的響應式數據時:oldValue無法正確獲取,強制開啟了勝讀監視(deep配置失敗)

   2.監視reactive定義的響應式數據中某個屬性時:deep配置有效

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM