Пространство имен модулей Vue x

#vue.js #vuex #store

#vue.js #vuex #Магазин

Вопрос:

Я застрял на проблеме, с которой я уже сталкивался и которая была решена с помощью пространства имен, но ничего не помогло. Это мой модуль:

 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()] : []
});
 

И я пытаюсь получить доступ к своим геттерам из моего компонента следующим образом :

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

Но у меня есть сообщение об ошибке в консоли: [vuex] пространство имен модуля не найдено в mapGetters(): Algo1Module/

Я не понимаю или, возможно, допустил ошибку. Спасибо вам за ответ, который вы можете мне дать.

Ответ №1:

Оно примет имя, которое вы настроили при импорте модуля, попробуйте algo1

Комментарии:

1. Ах, да, это моя вина, я действительно не видел разницы в именовании. Большое спасибо

Ответ №2:

  1. Имя вашего модуля зарегистрировано под algo1 именем.
  2. Если вы хотите вызвать его Algo1Module , зарегистрируйте его в хранилище следующим образом:
 modules: {
  Algo1Module: algo1,
}