第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在vue中,為什么父組件的值改變后,過幾毫秒子組件才能watch到prop的變化?附代碼

在vue中,為什么父組件的值改變后,過幾毫秒子組件才能watch到prop的變化?附代碼

慕田峪4524236 2019-04-27 22:20:05
已找到答案:vue官網(wǎng)-深入響應(yīng)式原理-異步更新隊列https://cn.vuejs.org/v2/guide...復(fù)現(xiàn)代碼下方代碼放進(jìn)html文件中可直接運(yùn)行,點擊改變age按鈕,查看控制臺變化子組件接收age,父組件傳入age,改變父組件的age,輸出子組件的age,此時子組件的age值還未更新我想要的結(jié)果是父組件age改變后,調(diào)用子組件的printAge方法,輸出的age值是父組件改變后的age值,為什么結(jié)果不是這樣,prop的原理為什么不是這樣?prop的原理是怎樣的?這塊邏輯prop的源碼是如何實現(xiàn)的?控制臺輸出:父組件中的age值為:2子組件中的age值為:1父組件改變age值后:5毫秒,子組件才監(jiān)控到變化,變化前age:1,變化后age:2,此時子組件中的age值為:2父組件中的age值為:3子組件中的age值為:2父組件改變age值后:1毫秒,子組件才監(jiān)控到變化,變化前age:2,變化后age:3,此時子組件中的age值為:3proptest{{hello}}改變ageVue.component('age',{props:['age'],data(){return{ageChangeTime:0}},methods:{printChildAge(){this.ageChangeTime=newDate().getTime()console.log('子組件中的age值為:'+this.age)}},watch:{age(val,oldVal){console.log('父組件改變age值后:'+(newDate().getTime()-this.ageChangeTime)+'毫秒,子組件才監(jiān)控到變化,變化前age:'+oldVal+',變化后age:'+val+',此時子組件中的age值為:'+this.age)}},template:'年齡:{{age}}'})constapp=newVue({el:'#app',data(){return{age:1,hello:'helloworld'}},methods:{ageChange(){this.age++console.log('父組件中的age值為:'+this.age)//調(diào)用子組件,輸出子組件中的age值this.$refs.age.printChildAge()}}})
查看完整描述

2 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊

只說說結(jié)果為什么是這樣子
請考慮如下同步代碼,那下面的代碼會發(fā)生什么?watch3遍嗎?不,通常來說,用戶并不更新中間變了什么值,值關(guān)心一次marcotask最后的值變成了什么樣。
this.age++
this.age++
this.age++
所以vue是怎么做的呢,放microtask里。scheduler.js#L176當(dāng)然如果你需要同步更新子組件也不是不可以,加上Vue.config.async=false,但這個特性很快也會被移除。Vue-config-async-移除
                            
查看完整回答
反對 回復(fù) 2019-04-27
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

我理解著應(yīng)該是子組件的age和父組件的age應(yīng)該是同一個值,父組件值改變了,子組件瞬間改變
那你理解錯了,如果按你所說的父子組件的age指向同一個值的話,vue的子組件也不需要使用$emit()事件來跟父組件通訊了。至于vue為什么要這么做,好像教程里也有寫。
單向數(shù)據(jù)流所有的prop都使得其父子prop之間形成了一個單向下行綁定:父級prop的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父級組件的狀態(tài),從而導(dǎo)致你的應(yīng)用的數(shù)據(jù)流向難以理解。額外的,每次父級組件發(fā)生更新時,子組件中所有的prop都將會刷新為最新的值。這意味著你不應(yīng)該在一個子組件內(nèi)部改變prop。如果你這樣做了,Vue會在瀏覽器的控制臺中發(fā)出警告。
                            
查看完整回答
反對 回復(fù) 2019-04-27
  • 2 回答
  • 0 關(guān)注
  • 737 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號