2016-12-02 19 views
4

vue2.0では、イベント$dispatch$broadcastは推奨されていません。

そして、$dispatch$emitと似ています。

どういう違いがありますか?移行時に$dispatchを直接$emitに置き換えても安全ですか?

+0

ヴュ2と異なりそのコードを処理する必要が*は '$のdispatch'を削除しており、 '$放送する'。イベントハブの使用をお勧めします。 https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced – peter

答えて

7

いいえ、$disptach$emitと置き換えることはできません。 子から親への通信のためにそれを置き換えることができますが、他の場合には他の方法を取らなければならないかもしれません。 documentationUpgrade Tipsでエヴァンから同様のコメントをあなたが)から

:これらのメソッドの最も一般的な使用の

一つは、親とその直接の子の間で通信することです。このような場合には、実際にv-onを使って子供から$ emitを聞くことができます。これにより、明示的に追加されたイベントの利便性を保つことができます。

しかし、遠い子孫/祖先間で通信する場合、$ emitはあなたを助けません。代わりに、最も簡単なアップグレードは、集中型のイベントハブを使用することです。 $dispatch

ディスパッチイベントのドキュメントから

は、最初のインスタンス自体でそれをトリガし、次に親チェーンに沿って上方に伝搬します。そのリスナーがtrueを返さない限り、親イベントリスナーをトリガーすると伝播が停止します。一方$emit

トリガ現在のインスタンス上のイベント。追加の引数は、リスナーのコールバック関数に渡されます。

だから、あなたが見ることができ、あなたは$dispatch経由で親要素の複数の層にすれ違い通信している場合、あなたは$emit

+0

これは、 '$ emit'が自分自身とその親に渡すことを意味し、' $ dispatch'はバブルを起こしてパスしますが、それは正しい? –

+0

親子のコミュニケーションのコンテキストで:はい、$ emitの他の用途もあります。これは[documentation](https://vuejs.org/v2/guide/components.html#Non-Parent-Child)で調べることができます。 -コミュニケーション)。しかし、vue 1から移行する場合は、このチェーン伝播の違いを考慮する必要があります。 – Saurabh

関連する問題