已找到答案: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()}}})
在vue中,為什么父組件的值改變后,過幾毫秒子組件才能watch到prop的變化?附代碼
慕田峪4524236
2019-04-27 22:20:05