如何订阅商店模块

Rik*_*ard 12 vue.js vuex

我知道在 Vuex 中我们可以做到,store.subscribe并且我们传递一个回调,该回调在 store 中的每次更改时都会被调用。

在我的应用程序中,我有一个包含许多模块的商店,并且subscribe只想使用特定的 Module 而不必具有这种逻辑if (mutation.type != thisModule.type) return;

是否可以只订阅某些模块?在文档中找不到它

bee*_*ill 5

我遇到了同样的问题,并根据此链接遇到了这个问题: https: //forum.vuejs.org/t/vuex-subscribe-and-modules/36049 订阅始终是全局的。

我的解决方法是检查每个订阅中的突变:

假设您有一个模块“yourmodule”用于订阅,您可以执行以下操作:

store.subscribe((mutation, state) => {
  if (mutation.type.startsWith("yourmodule")){
    //do your stuff here
  }
})
Run Code Online (Sandbox Code Playgroud)

mutation.type将给出实际的突变名称,例如“yourmodule/yourcommit”,我使用startswith()方法来检查,因为我的模块都没有相同的启动方式,但您可以对自己的项目使用更准确的检查。