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

vue.js Vue.js

JimLEYSam

2020-03-12

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

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

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

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

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

第1138篇《我应该如何处理Vuex中的事件?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

1个回答
斯丁西门 2020.03.12

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

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

正如文档所说:

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

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

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android