经典 Vuex 到模块化:为什么 Getter 现在未定义?

Classic Vuex to Modular: Why is Getter now undefined?

我正在从经典 vuex 转向模块化 vuex,但我需要一些帮助来了解如何在我的应用程序中调用 getter。这是我的商店:

store/user.js:

export const state = () => ({
  currentUser: null,
  userProfile: {}
})
export const getters = {
  loggedIn(state) {
    return !!state.currentUser
  }
}

当我从我的应用程序调用 loggedIn 时,我得到 loggedIn 作为 undefined。这是我调用 loggedIn:

的方式

src/components/MainNav.vue:

computed: {    
loggedIn() {
      return this.$store.getters.user.loggedIn
    }
}

有人发现我做错了什么吗?谢谢!

您的商店有 user 命名空间,因此您必须按如下方式调用 loggedIn getter:

computed: {    
  loggedIn() {
    return this.$store.getters['user/loggedIn']
  }
}

另一种方法是使用 mapGetter 助手,如 Vuex docs

中所述