在vue2.0中,不建議使用事件$dispatch
和$broadcast
。我發現$dispatch
與$emit
類似。
他們之間有什麼不同?遷移時是否安全直接將$dispatch
替換爲$emit
?
在vue2.0中,不建議使用事件$dispatch
和$broadcast
。我發現$dispatch
與$emit
類似。
他們之間有什麼不同?遷移時是否安全直接將$dispatch
替換爲$emit
?
不,您無法將$disptach
替換爲$emit
。您可以將其替換,無論您使用何種通訊方式從孩子到父母,但對於其他情況,您可能需要採取其他方法。
從documentation(類似的評論埃文你在Upgrade Tips):
其中最常見的用途的這些方法是父母和其子女的直接之間通信。在這些情況下,您實際上可以聽取來自v-on的孩子的$ emit。這使您可以更加明確地保持事件的便利性。
但是,當在遙遠的後代/祖先之間進行通信時,$ emit不會幫助你。相反,最簡單的升級可能是使用集中式事件中心。
調度的事件的文檔,第一觸發它的實例本身,然後沿母鏈向上傳播。傳播在觸發父事件偵聽器時停止,除非該偵聽器返回true。
,另一方面$emit:
觸發當前實例的事件。任何其他參數都將傳遞到偵聽器的回調函數中。
所以你可以看到,如果通過$dispatch
傳遞通信到父元素的多層,你必須與$emit
好的,這意味着'$ emit'只傳遞給它自己和它的父代,而'$ dispatch'傳遞給冒泡,這樣對嗎? –
在父母子女溝通的背景下:是的,但也有$ emit的其他用途,您可以在[documentation](https://vuejs.org/v2/guide/components.html#Non-Parent-Child -通訊)。但是當你從vue 1遷移時,你需要考慮鏈傳播的這種差異。 – Saurabh
的Vue 2.不同的方式處理代碼*已刪除'$ dispatch'和'$ broadcast'。他們現在推薦使用事件中心。 https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced – peter