web-dev-qa-db-ja.com

Vuexでイベントを処理するにはどうすればよいですか?

グローバルイベントバスを使用して、コンポーネント間メソッドを処理することに慣れています。例えば:

var bus = new Vue();
...
//Component A
bus.$emit('DoSomethingInComponentB');
...
//Component B
bus.$on('DoSomethingInComponentB', function(){ this.doSomething() })

しかし、私はグローバルな国家管理を必要とするより大きなプロジェクトを構築しています。当然、私はVuexを使いたいです。

このバスパターンはVuexで機能しますが、間違っているようです。 Vuexがこのパターンのreplacementとして推奨されているのを見ました。

Vuexのコンポーネントでメソッドを実行する方法はありますか?これにどのようにアプローチすればよいですか?

23
Blue_Dragon360

Vuexevent bus は、vuexがアプリケーションの中心的な状態を管理し、イベントバスがアプリの異なるコンポーネント間の通信に使用されるという意味で2つの異なるものです。

コンポーネントからvuexの突然変異またはアクションを実行し、vuexのアクションからイベントを発生させることもできます。

docs のように:

アクションは突然変異に似ていますが、違いは次のとおりです。

  • 状態を変更する代わりに、アクションは変更をコミットします。
  • アクションには、任意の非同期操作を含めることができます。

そのため、アクションからバスを介してイベントを発生させ、任意のコンポーネントメソッドからアクションを呼び出すことができます。

22
Saurabh