vuex에서 프로토타입에 액세스할 수 있도록 설정
인마이app.js
파일 vue에서 번역을 사용할 수 있도록 빌드합니다.
Vue.prototype.trans = string => _.get(window.i18n, string);
vue 파일에서는 정상적으로 동작하고 있습니다.
{{ trans('translation.name') }}
문제는 제가 지금 쓰고 있는 그대로vuex
모듈 내의 몇 가지 내용을 번역해야 합니다.
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default {
namespaced: true,
state: {
page: 1,
criterias: [
{
name: this.trans('translation.name'),
filter: "life",
active: false
}
}
}
하지만 여기서는this.trans('translation.name')
동작하지 않습니다.어떻게 작동시킬 수 있을까요?
Vuex 프로토타입을 변환하는 것은 잘못된 작업이라고 생각합니다.이 경우, 실제로는 필요하지 않습니다.
파일 생성만 하면 됩니다.localization.js
파일 내의 i18n 플러그인을 인스턴스화합니다.또한 동일한 i18n 인스턴스를 반환하기 위해 명명된 함수를 내보냅니다.
// localization.js
const i18n = new VueI18n({ ... });
export const getLocalization = () => i18n;
export default i18n;
그런 다음 Vuex 모듈에서getLocalization
기능하고 실행함으로써 같은 것을 얻을 수 있습니다.i18n
인스턴스(instance) 및 이를 사용하여 변환을 수행합니다.
// vuex-module.js
import Vue from 'vue';
import Vuex from 'vuex';
import { getLocalization } from './localization';
Vue.use(Vuex);
const i18n = getLocalization();
export default {
state: {
criteria: i18n('translation.name'),
},
}
해결 방법을 제안할 수 있습니다.의 초기화를 이동할 수 있습니다.criterias
부터store.js
고객님께App.vue
변환 사용.
store.displaces를 설정합니다.
state: {
page: 1,
criterias: []
},
mutations: {
setCriterias(state, payload) {
state.criterias = payload;
},
}
App.vue
beforeMount() {
this.$store.commit( 'setCriterias' , [
{
name: this.trans('translation.name'),
filter: "life",
active: false
}
])
}
번역 콘텐츠로서window.i18n
어쨌든 글로벌하다, 왜 다른 것을 정의하지 않는가?trans
추가하는 방법과 유사한 방법Vue.prototype
당신의 스토어 모듈에 있나요?
나중에 이 메서드를 두 곳에서 편집해야 하는 경우 이 한 가지 메서드로 변환 모듈을 정의하고 Vue.protype을 설정한 장소와 스토어 모듈 내에서 모두 사용합니다.
언급URL : https://stackoverflow.com/questions/54293483/make-prototype-accessible-in-vuex
'programing' 카테고리의 다른 글
Vuex Getter가 정의되지 않음 (0) | 2022.08.29 |
---|---|
왜 Ant나 Maven 대신 Gradle을 사용하는가? (0) | 2022.08.29 |
Vue.js의 한도를 초과하는 경우 이름의 일부만 표시 (0) | 2022.08.29 |
Nuxt - 이전 경로를 찾는 방법 (0) | 2022.08.29 |
클래스 기반 접근 방식을 사용할 때 스토어 액션을 컴포넌트에 매핑하려면 어떻게 해야 합니까? (0) | 2022.08.29 |