반응형
Vue-i18n이 vuex에 정의되어 있지 않습니다.
Vue, Vuex 및 VueI18n을 사용하여 로케일 업데이트를 구현하려고 합니다.스토어 오브젝트의 i18n 값을 설정하고 다음과 같이 로케일을 갱신하는 방법을 찾았습니다(변환).
UPDATE_LANGUAGE: (state, newLanguage) => {
state.language = newLanguage;
this.$i18n.locale = state.language;
}
근데 의외로 안 먹히는데...이렇게 써있어요.$i18n은 정의되어 있지 않지만 정의되어 있습니다.
import store from "./store";
import EnMessages from "@/messages/en.json";
import EsMessages from "@/messages/es.json";
const i18n = new VueI18n(Vue, {
es: EsMessages,
en: EnMessages
});
i18n.locale = store.state.language;
store.$i18n = i18n;
Vue.http.interceptors.push((request, next) => {
//internacionalizacion en todas las urls
request.url = `${request.url}?lang=${store.getters["getLanguage"]}`;
//token en todas las urls
request.headers.set("token", store.getters["getToken"]);
next();
});
new Vue({
i18n,
router,
store,
render: h => h(App)
}).$mount("#app");
메서드 선언을 다음으로 변경합니다.
UPDATE_LANGUAGE: function(state, newLanguage) {
state.language = newLanguage;
this.$i18n.locale = state.language;
}
그 이유는 다음과 같습니다.
Vue 구성 요소 내에서 새 메서드를 선언합니다.를 사용하고 있는 경우function
키워드를 지정하여 메서드를 선언합니다.this
는 함수의 소유자(이 경우 Vue 컴포넌트 인스턴스)를 나타냅니다.
반면 화살표 기능 사용this
함수의 소유자를 나타내는 것은 아니지만this
는 컨텍스트에서 가져옵니다.라고 하는 에러가 표시됩니다.this
존재하지 않습니다.존재한다면 Vue 컴포넌트는 아닐 것입니다.
언급URL : https://stackoverflow.com/questions/57749437/vue-i18n-undefined-in-vuex
반응형
'source' 카테고리의 다른 글
NUXT: 비동기 가져오기를 혼합으로 사용하여 덮어쓸 페이지 데이터에 액세스하는 방법 (0) | 2022.08.18 |
---|---|
Vuex가 개별 돌연변이에 가입하다 (0) | 2022.08.18 |
Vue 라우터: TypeError: 정의되지 않은 속성 '$createElement'를 읽을 수 없습니다. (0) | 2022.08.18 |
vue.js에서 업데이트되지 않는 이유 (0) | 2022.08.18 |
Hadoop "플랫폼에 네이티브 하둡 라이브러리를 로드할 수 없습니다" 경고 (0) | 2022.08.18 |