国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 監(jiān)聽props 的變化

這篇具有很好參考價值的文章主要介紹了vue3 監(jiān)聽props 的變化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

再三說明 僅僅個人學(xué)習(xí)用,不誤導(dǎo)別人
我覺得props 會創(chuàng)建對應(yīng)的屬性,去接受這些值,比如傳遞一個ref的基本值 age
props.age = age.value
傳遞一個ref的引用值 person
props.person= person.value
傳遞一個reactive的引用值 person
props.person= person

最開始時候,props指向了一個響應(yīng)式的reactive person,如果我們手動將person = {} 整個替換掉,是不影響原來指向的值的(setup只在初始化時執(zhí)行一次,所有一開始props指向的是一個響應(yīng)式的person,而當(dāng)前改變的person 并不影響,props當(dāng)中的person 所以也無法監(jiān)聽)

1、父組件使用reactive 接收數(shù)據(jù)

let person = reactive({
  age: 21,
  name: 'test',
  info: {
    a: 1
  }
});

person 和 info 以及prop都是一個reactive對象,都可以作為watch第一個參數(shù)

const props = defineProps({
  person: {
    age: Number,
    name: String,
    info: {
      a: Number
    }
  }
});

可以監(jiān)聽到info 里邊某個屬性變化
watch(person.info, (value) => {
  console.log(value);
})
整個info 被替換掉也可以監(jiān)聽到
watch(() => person.info, (value) => {
  console.log(value);
})
整個person 替換掉 無法被監(jiān)聽,因為props當(dāng)中的person 指向的是一個已經(jīng)封裝了的reactive對象
如果在父組件當(dāng)中直接person = newValue props是無法監(jiān)聽到的

2、父組件使用ref 接收數(shù)據(jù)

let person = ref({
  age: 21,
  name: 'test',
  info: {
    a: 1
  }
});

將person.value = { } 整個替換

可以監(jiān)聽到
watch(props, (value) => {
  console.log(value);
})
無法監(jiān)聽
watch(props.person, (value) => {
  console.log(value);
})
可以監(jiān)聽到person 被整個替換掉
watch(() => props.person, (value) => {
  console.log(value);
})

做項目中,我將修改 或者 新增的表單組件分離出去了,每次新增或者修改時候需要給表單組件傳遞一個person 值,新增時候需要置空,修改時候需要賦予值

我們知道person = {}是沒辦法監(jiān)聽到的,所以采用

let person = ref({
  age: 21,
  name: 'test',
  info: {
    a: 1
  }
});

const add= ()=>{
	person.value = {}
]

const add= ()=>{
	Object.assign(person.value,{age:2,name:'test'})
]

監(jiān)聽變化文章來源地址http://www.zghlxwxcb.cn/news/detail-680358.html

到了這里,關(guān)于vue3 監(jiān)聽props 的變化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3 動態(tài)監(jiān)聽瀏覽器窗口變化

    定義一個屬性記錄寬度 在 vue mounted 的時候 去掛載一下 window.onresize 方法 去監(jiān)聽這個 屬性值的變化,如果發(fā)生變化則講這個 val 傳遞給 this.screenWidth 這樣screenWidth就跟隨瀏覽器的窗口大小動態(tài)變化了 進(jìn)行使用

    2024年02月13日
    瀏覽(22)
  • vue3 實現(xiàn)監(jiān)聽store里state狀態(tài)變化

    需要注意: 不能直接監(jiān)聽對象的屬性值,需要寫成getter函數(shù)。 總結(jié): watch 的第一個參數(shù)可以是不同形式的數(shù)據(jù)源,它可以是一個ref(包括計算屬性),一個響應(yīng)式對象,一個getter函數(shù),或多個數(shù)據(jù)源組成的數(shù)組。 不能直接監(jiān)聽響應(yīng)式對象的屬性: 這里需要寫成返回對象屬

    2024年02月17日
    瀏覽(19)
  • watch監(jiān)聽,解決Vue3父組件異步props傳值,子組件接收不到的問題

    watch監(jiān)聽,解決Vue3父組件異步props傳值,子組件接收不到的問題

    寫靜態(tài)數(shù)據(jù)的時候父組件傳值子組件接收并渲染是沒問題的,但當(dāng)父組件異步獲取數(shù)據(jù),子組件接收數(shù)據(jù)會晚于渲染,就會產(chǎn)生接收不到的問題,我在用echarts繪制圖表時圖表就直接不顯示 ?用watch監(jiān)聽props數(shù)據(jù)并在watch內(nèi)進(jìn)行賦值操作可解決該問題 直接上代碼 父組件,vue3語法

    2024年02月15日
    瀏覽(36)
  • Vue,js 監(jiān)聽window窗口尺寸變化

    1.監(jiān)聽window窗口變化 VueJs 監(jiān)聽 window.resize 方法,同時窗口拉伸時會頻繁觸發(fā)resize函數(shù),導(dǎo)致頁面性能 卡頓 ,可以搭配setTimeout來提升性能 在mounted中掛載resize方法 watch?監(jiān)聽 data中或props傳遞的數(shù)據(jù)

    2024年02月11日
    瀏覽(45)
  • vue3實現(xiàn)父組件向子組件傳值并監(jiān)聽props改變觸發(fā)事件

    1. 父組件 向子組件 loginPhone 傳遞 tel 參數(shù)? phone 是在 reactive 定義的變量也可是是 ref 定義的變量 2. 子組件

    2024年02月05日
    瀏覽(33)
  • vue3 封裝自定義指令,監(jiān)聽元素寬高的變化

    vue3 封裝自定義指令,監(jiān)聽元素寬高的變化

    最近做一個項目,涉及到echart圖,要去根據(jù)父元素去自適應(yīng)寬高,所以需要監(jiān)聽到元素的寬高變化、 因為是 監(jiān)聽某一元素的寬高變化 ,所以這里用的是 ResizeObserver. ResizeObserver 是可以監(jiān)聽到DOM元素,寬高的變化,需要注意的一點就是監(jiān)聽出變化結(jié)果是contentBox的寬度和高度。

    2024年02月07日
    瀏覽(24)
  • vue3報錯:runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop “modelVal

    ?????? 歡迎關(guān)注csdn前端領(lǐng)域博主: 前端小王hs ?????? email: 337674757@qq.com ?????? 前端交流群: 598778642 vue3報錯:runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop “modelValue”. Expected Boolean, got Object at 警告的大意是綁定的函數(shù)期待得到的是布爾值,但得到

    2023年04月08日
    瀏覽(19)
  • Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽

    Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽

    Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽!今天和大家分享的內(nèi)容是,關(guān)于watch的深度偵聽和精確監(jiān)聽。 首先看一下,第一個案例,練習(xí)的是,深度監(jiān)聽的效果。默認(rèn)是淺的偵聽,是不會觸發(fā)回調(diào)函數(shù)的。 如圖,當(dāng)我們點擊按鈕,修改num值的時候,觸發(fā)了回調(diào)函數(shù),在

    2024年01月23日
    瀏覽(20)
  • JS 監(jiān)聽元素dom變化

    JS 監(jiān)聽元素dom變化

    我們在開發(fā)中,會遇到一些需求,需要監(jiān)聽元素變化,比如元素屬性變化,元素大小變化,今天,我們就來聊聊倆種常用實現(xiàn)監(jiān)聽的方案,其他的自行研究 一、ResizeObserver ResizeObserver 是來監(jiān)聽元素的大小位置發(fā)生變化,也可以說是回流(重排)時的變化 然后,我們創(chuàng)建監(jiān)聽器,

    2024年02月15日
    瀏覽(17)
  • Vue2 watch監(jiān)聽props的值

    Vue2 watch監(jiān)聽props的值

    再次遇到監(jiān)聽子組件收到父組件傳過來的值,如果這個值變化,頁面中的值發(fā)現(xiàn)是不會跟著同步變化的。所以監(jiān)聽props中的值,一直監(jiān)聽。 ? 代碼: ?

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包