我习惯使用全局事件总线来处理跨组件方法。例如:
var bus = new Vue();
...
//Component A
bus.$emit('DoSomethingInComponentB');
...
//Component B
bus.$on('DoSomethingInComponentB', function(){ this.doSomething() })
但是,我正在构建一个更大的项目,这需要全局状态管理。当然,我想使用 Vuex。
虽然这种总线模式适用于 Vuex,但它似乎是错误的。我已经看到 Vuex 被推荐作为这种模式的 替代品。
有没有办法在 Vuex 的组件中运行方法?我应该如何处理这个?
原文由 Aaa 发布,翻译遵循 CC BY-SA 4.0 许可协议
Vuex 和 事件总线 是两个不同的东西,因为 Vuex 管理应用程序的中央状态,而事件总线用于在应用程序的不同组件之间进行通信。
您可以从组件执行 vuex 突变或操作,也可以从 vuex 的操作中引发事件。
正如 文档 所说:
因此,您可以通过总线从动作中引发事件,并且可以从任何组件方法调用动作。