ここでの「イベント」とは、コンポーネント親子間での通信でなく、
$on
でのリッスンや、いわゆるイベントバスとしての Vue インスタンスを別途設けて利用する手法を指します。
それらの仕組みや使い方については一応理解しているつもりで、
お訊きしたいのは「使い方」でなく「使い途」です。
Vue 1.x の頃は、 $dispatch
$broadcast
のような考え方があり、
つまりイベント発行先を特定せずに「自分のすべての祖先コンポーネント」「自分のすべての子孫コンポーネント」にイベントを一斉に「降らせる」ことができました。
これはこれで使いどころがあったと思います。
しかし Vue 2.x 現在では、
たとえば $root
や $refs.xxx
等で送信先を特定して、それに向けて $emit
すると思うのですが、
特定できるならイベントでなく特定先のメソッドを単に直接呼び出せばよいだけではないか、「イベント」の使い途、使いどころ、メリットは何か、いまいちピンと来ません。
発行先を特定する前提なので「イベントならツリーに依存せずに…」のような言い方は当てはまらないと思います。
メソッド呼び出しなら、引数設計も自由、戻値を期待することもでき、非同期な処理内容であっても Promise を返却してもらったり自由ですが、イベントは投げっぱなしで、使い途やメリットが思いつきません。
どちらかといえばグローバルな使途を想像しています。
グローバルとはたとえば、ECサイトでいえば、「カートに入れる」処理を商品詳細ページで呼び出せるだけでなく、トップ画面のメインバナーに表示される商品や、どのページでも表示されるサイドバーにあるオススメ商品もカートに入れることができる仕様のとき、どこからでも「カートに入れる」処理を持つ唯一の先に指示を出せる、という意味です。
イベント発行にあたりその唯一の先を「特定」できる時点で、イベントを介さずにメソッドを直接呼び出せばよいのでは、と思うのです。
あるいは、イベント送信先の「特定」は不要なのでしょうか?
「イベント」がハマる使いどころや、もしくは私がそもそもイベントの仕組みを誤解しているなど、ご意見やご指摘を頂けますでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/14 19:22
2017/12/14 22:18
2017/12/17 23:46
2017/12/18 01:14