如何从另一个vuex模块访问getter?

在vuex getter中,我知道可以从另一个vuex模块访问状态,如下所示:

pages: (state, getters, rootState) => {
    console.log(rootState);
}

我如何从另一个vuex模块而不是状态访问getter?

我还有另一个vuex模块,需要访问它的过滤器,我已经尝试过了:

rootState.filters.activeFilters

activeFilters我的吸气剂在哪里,但这行不通。使用rootState.filters.getters.activeFilters也不起作用。

小卤蛋Pro2020/03/11 11:51:26

此示例用于将getter从一个模块访问到另一个模块的动作中。

下面是user.js带有吸气剂的模块

isUserAuthenticated: state => {
  return !(state.token == null);
}

要在post.js模块操作中访问它

validateAction(vuexContext, actionDetails) {
  return new Promise((resolve, reject) => {

    if (vuexContext.rootGetters["user/isUserAuthenticated"]) {
        console.log("User is authenticated");
    } else {
        console.log("User is not authenticated");
    }
  });
...
}

希望这会有所帮助。

Near神乐路易2020/03/11 11:51:26

不得不仔细阅读文档,但我发现了它:

https://vuex.vuejs.org/en/api.html

(Ctrl + F在该页面上搜索RootGetters)

我的代码变成:

pages: (state, getters, rootState, rootGetters) => {}

请注意,所有rootGetters都是全局的,您不再像rootState那样使用它,而是在该状态之前为模块名称加上状态前缀。

您只需从另一个模块调用getter,如下所示:

rootGetters.activeFilters

希望这将对将来遇到这种情况的人有所帮助。