亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

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

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

呼如林 2019-02-06 19:07:07
控制臺輸出:父組件中的age值為:2子組件中的age值為:1父組件改變age值后:5毫秒,子組件才監控到變化,變化前age:1,變化后age:2,此時子組件中的age值為:2父組件中的age值為:3子組件中的age值為:2父組件改變age值后:1毫秒,子組件才監控到變化,變化前age:2,變化后age:3,此時子組件中的age值為:3
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

只說說結果為什么是這樣子

請考慮如下同步代碼,那下面的代碼會發生什么?watch3遍嗎?不,通常來說,用戶并不更新中間變了什么值,值關心一次marcotask最后的值變成了什么樣。

this.age++this.age++this.age++

所以vue是怎么做的呢,放microtask里。scheduler.js#L176
當然如果你需要同步更新子組件也不是不可以,加上Vue.config.async = false,但這個特性很快也會被移除。Vue-config-async-移除


查看完整回答
反對 回復 2019-03-13
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

我理解著應該是子組件的age和父組件的age應該是同一個值,父組件值改變了,子組件瞬間改變

那你理解錯了,如果按你所說的父子組件的age指向同一個值的話,vue的子組件也不需要使用$emit()事件來跟父組件通訊了。至于vue為什么要這么做,好像教程里也有寫。

單向數據流
所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父級 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父級組件的狀態,從而導致你的應用的數據流向難以理解。

額外的,每次父級組件發生更新時,子組件中所有的 prop 都將會刷新為最新的值。這意味著你不應該在一個子組件內部改變prop。如果你這樣做了,Vue 會在瀏覽器的控制臺中發出警告。


查看完整回答
反對 回復 2019-03-13
  • 2 回答
  • 0 關注
  • 1334 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號