Vue2.0では、イベント$dispatch
および$broadcast
は廃止されました。
そして、$dispatch
は$emit
と似ていることがわかりました。
それらの違いは何ですか?移行時に$dispatch
を$emit
に直接置き換えることは安全ですか?.
いいえ、どこでも$disptach
を$emit
に置き換えることはできません。 childからparentへの通信に使用している場合は、どこでもそれを置き換えることができますが、それ以外の場合は、他のアプローチを取る必要があります。
documentation から( pgrade Tips のEvan youからの同様のコメント):
これらのメソッドの最も一般的な用途の1つは、親とその直接の子の間の通信です。これらの場合、v-onの子供からの$ emitを実際に聞くことができます。これにより、明示性を追加してイベントの利便性を維持できます。
ただし、離れた子孫/祖先の間で通信する場合、$ emitは役に立ちません。代わりに、最も簡単なアップグレードは、集中型のイベントハブを使用することです。
$ dispatch のドキュメントから
イベントをディスパッチし、最初にインスタンス自体でトリガーしてから、親チェーンに沿って上方に伝播します。リスナーがtrueを返さない限り、親イベントリスナーがトリガーされると、伝播は停止します。
一方、 $ emit :
現在のインスタンスでイベントをトリガーします。追加の引数は、リスナーのコールバック関数に渡されます。
ご覧のとおり、$dispatch
を介して親要素の複数の層に通信を渡す場合、$emit