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はあなたを助けません。代わりに、最も簡単なアップグレードは、集中型のイベントハブを使用することです。 $dispatch
ディスパッチイベントのドキュメントから
は、最初のインスタンス自体でそれをトリガし、次に親チェーンに沿って上方に伝搬します。そのリスナーがtrueを返さない限り、親イベントリスナーをトリガーすると伝播が停止します。一方$emitで
:
トリガ現在のインスタンス上のイベント。追加の引数は、リスナーのコールバック関数に渡されます。
だから、あなたが見ることができ、あなたは$dispatch
経由で親要素の複数の層にすれ違い通信している場合、あなたは$emit
これは、 '$ emit'が自分自身とその親に渡すことを意味し、' $ dispatch'はバブルを起こしてパスしますが、それは正しい? –
親子のコミュニケーションのコンテキストで:はい、$ emitの他の用途もあります。これは[documentation](https://vuejs.org/v2/guide/components.html#Non-Parent-Child)で調べることができます。 -コミュニケーション)。しかし、vue 1から移行する場合は、このチェーン伝播の違いを考慮する必要があります。 – Saurabh
ヴュ2と異なりそのコードを処理する必要が*は '$のdispatch'を削除しており、 '$放送する'。イベントハブの使用をお勧めします。 https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced – peter