Vue x 模块命名空间

Vue x module Namespace

我遇到了一个我已经遇到过的问题,该问题已通过命名空间解决,但无济于事。 这是我的模块:

const Algo1Module = {
  namespaced: true,
  state: {
    questions: {
      question1: "test",
      question2: "",
      question3: "",
      question4: "",
      question5: "",
      question6: ""
    }
  },
  getters: {
    getMyQuestions(state) {
      return state.questions;
    }
  }
};

export default Algo1Module; // export the module

这是我的 index.js 从我的商店:

import Vuex from "vuex";
import createLogger from "vuex/dist/logger";
import algo1 from "@/store/modules/algo1.store";

Vue.use(Vuex);
const debug = process.env.NODE_ENV !== "production";

export default new Vuex.Store({
  modules: {
    algo1
  },
  strict: debug,
  plugins: debug ? [createLogger()] : []
});

我尝试像这样从我的组件访问我的 getters :

<script>
import { mapGetters } from "vuex";
export default {
  name: "Algo",
  computed: {
    ...mapGetters("Algo1Module", ["getMyQuestions"])
  }
};
</script> 

但我在控制台中收到一条错误消息:[vuex] module namespace not found in mapGetters(): Algo1Module/

我没看懂,或者我理解有误。 谢谢你能给我的答案。

会取你导入模块时设置的名称,试试algo1

  1. 您的模块名称已在 algo1 名称下注册。
  2. 如果你想叫它Algo1Module然后像这样在商店注册它:
modules: {
  Algo1Module: algo1,
}