Я переписываю приложение Vue в архитектуру Nuxt, потому что нам нужен SSR.Однако я не хочу переписывать файл хранилища Vuex:
import Vue from "vue";
import Vuex from "vuex";
import vuexI18n from "vuex-i18n/dist/vuex-i18n.umd.js";
import toEnglish from "../translations/toEnglish";
import toSpanish from "./../translations/toSpanish";
import toGerman from "./../translations/toGerman";
import toRussian from "./../translations/toRussian";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
currentLanguage: ''
},
mutations: {
changeLang: (state, response) => {
if(response) {
state.currentLanguage = response;
Vue.i18n.set(response);
console.log(response);
}
}
}
});
Vue.use(vuexI18n.plugin, store);
Vue.i18n.add("en", toEnglish);
Vue.i18n.add("es", toSpanish);
Vue.i18n.add("de", toGerman);
Vue.i18n.add("ru", toRussian);
export default store;
Я знаю, что у Nuxt есть другой подход к этому, но я действительно хочу придерживаться приведенного выше кода.К сожалению, я не могу вызвать мутацию из моего компонента:
this.$store.commit('changeLang', lang)
ошибка печати в консоли:
[vuex] неизвестный тип мутации: changeLang
Я тоже так пытался
this.$store.commit('store/changeLang', lang)
но ошибка та же.Как это исправить?Нужно ли переписывать этот файл vuex, чтобы он работал?
Я следовал советам @Aldarund и изменил код выше:
import Vue from "vue";
import Vuex from "vuex";
import vuexI18n from "vuex-i18n/dist/vuex-i18n.umd.js";
import toEnglish from "../translations/toEnglish";
import toSpanish from "./../translations/toSpanish";
import toGerman from "./../translations/toGerman";
import toRussian from "./../translations/toRussian";
const store = () => {
return new Vuex.Store({
state: () => ({
currentLanguage: ''
}),
mutations: {
changeLang: (state, response) => {
if (response) {
state.currentLanguage = response;
Vue.i18n.set(response);
console.log(response);
}
}
}
})
};
Vue.use(vuexI18n.plugin, store);
Vue.i18n.add("en", toEnglish);
Vue.i18n.add("es", toSpanish);
Vue.i18n.add("de", toGerman);
Vue.i18n.add("ru", toRussian);
export default store;
Теперь ошибка
Uncaught TypeError: store.registerModule не является функцией
Возможно, из-за Vue.use(vuexI18n.plugin, store);
.