【问题标题】:How to use mapGetters with Vuex Modules如何在 Vuex 模块中使用 mapGetters
【发布时间】:2019-12-11 00:02:09
【问题描述】:

我在store/index.js添加了模块

import NavMessage from './nav/message/index';
new Vuex.Store({
  modules: {
    NavMessage,
  },
});

我的消息/index.js

import state from './state';
import getters from './getters';
import mutations from './mutations';

export default {
  state,
  getters,
  mutations,
};

这里是吸气剂

const getters = () => ({
  getCount: state => {
    return state.count;
  },
});

export default getters;

我正在尝试从NavMessage/getCount 获取数据

...mapGetters({
    count: 'NavMessage/getCount',
  }),

但我收到错误unknown getter: NavMessage/getCount

帮我谢谢

【问题讨论】:

  • 你想使用命名空间吗? vuex.vuejs.org/guide/modules.html#namespacing 如果需要,您需要将 namespaced: true 添加到模块中。我还建议检查 getCount 的大小写,因为错误消息中的第一个字母似乎是大写的。
  • @skirtle 感谢您的回复,但仍然遇到同样的错误
  • 我仍然需要知道您是否要使用命名空间。正确的解决方法取决于您要执行的操作。

标签: vue.js vuex nuxt.js vuex-modules


【解决方案1】:

下面是一个工作示例。

我做了两个重要的改变:

  1. 我已将namespaced: true 添加到模块中。
  2. 我已从 getters 周围删除了包装函数。

如果您不想使用命名空间,则需要将 mapGetters 参数改为 count: 'getCount'NavMessage/ 前缀仅在命名空间中是必需的。

const mapGetters = Vuex.mapGetters

const state = {
  count: 6
}

const getters = {
  getCount: state => {
    return state.count
  }
}

const mutations = {}

const NavMessage = {
  namespaced: true,
  state,
  getters,
  mutations
}

const store = new Vuex.Store({
  modules: {
    NavMessage
  }
})

const app = new Vue({
  store,

  computed: {
    ...mapGetters({
      count: 'NavMessage/getCount',
    })
  }
})

console.log(app.count)
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@3.1.2/dist/vuex.js"></script>

您已使用 Nuxt 标记问题。如果您使用的是 Nuxt,我强烈建议您阅读他们的商店使用指南:

https://nuxtjs.org/guide/vuex-store

Nuxt 做的事情有点不同,但据我所知,你仍然不应该在你的 getters 周围有一个函数包装器。 namespaced: true 将自动添加,您不需要自己创建 new Vuex.Store。 Nuxt 自己创建 store 并根据文件夹结构添加模块。

【讨论】:

  • 感谢您的回复,我在您的应用中登录时所做的,现在我正在获取 getters 检查屏幕截图prnt.sc/q98ftq,但仍然遇到相同的错误
猜你喜欢
  • 2020-03-29
  • 2018-12-22
  • 2020-06-22
  • 2021-05-24
  • 2018-07-07
  • 2019-12-23
  • 2020-11-22
  • 2021-01-28
  • 1970-01-01
相关资源
最近更新 更多