我应该如何处理Vuex中的事件?

我习惯于使用全局事件总线来处理跨组件方法。例如:

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

但是,我正在构建一个较大的项目,这需要全局状态管理。自然,我想使用Vuex。

尽管此总线模式可用于Vuex,但似乎是错误的。我已经看到Vuex建议替代此模式。

有没有一种方法可以在Vuex的组件中运行方法?我应该如何处理?

斯丁西门2020/03/12 16:31:38

在事件总线用于在应用程序的不同组件之间进行通信的同时,vuex可以管理应用程序的中央状态,从某种意义上说,Vuex事件总线是两种不同的事物。

您可以从组件执行vuex突变或动作,还可以从vuex的动作引发事件。

正如文档所说:

动作类似于突变,不同之处在于:

  • 动作不会改变状态,而是执行突变。
  • 动作可以包含任意异步操作。

因此,您可以通过总线从操作引发事件,并且可以从任何组件方法调用操作。