#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:
- Имя вашего модуля зарегистрировано под
algo1
именем. - Если вы хотите вызвать его
Algo1Module
, зарегистрируйте его в хранилище следующим образом:
modules: {
Algo1Module: algo1,
}