vuex: 상태 필드 "foo"가 "foo"에서 이름이 같은 모듈에 의해 재정의되었습니다.
콘솔에 다음 경고가 표시됩니다.
[vuex] 상태 필드 "foo"가 "foo"에서 이름이 같은 모듈에 의해 재정의되었습니다.
그게 무슨 의미이고 내가 뭘 잘못했을까?
이는 Vuex 3.1.2에 추가된 새로운 경고입니다.
https://github.com/vuejs/vuex/releases/tag/v3.1.2
이 로그는 속성 이름이 다음 중 하나일 때 기록됩니다.state
다음과 같이 모듈 이름과 경합합니다.
new Vuex.Store({
state: {
foo: 'bar'
},
modules: {
foo: {}
}
})
접속을 시도하는 경우state.foo
그 가치는 다음과 같습니다.'bar'
하지만 그것은 실제로 '그녀석에게state
의foo
모듈.
이 문제는 에서 속성을 삭제함으로써 해결할 수 있습니다.state
오브젝트 또는 속성 또는 모듈의 이름을 변경합니다.
다음은 관련 경고를 기록하고 결과 값을 보여주는 작은 예입니다.state.foo
:
const store = new Vuex.Store({
state: {
foo: 'bar'
},
modules: {
foo: { state: { flag: 2 } }
}
})
console.log(store.state.foo)
<script src="https://unpkg.com/vue@2.6.11/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@3.4.0/dist/vuex.js"></script>
업데이트:
이 경고는 테스트 중 등 동일한 구성 개체를 사용하여 여러 저장소를 생성하는 경우에도 기록될 수 있습니다.
다음은 예를 제시하겠습니다.
const config = {
state: {},
modules: {
foo: {}
}
}
const store1 = new Vuex.Store(config)
const store2 = new Vuex.Store(config)
<script src="https://unpkg.com/vue@2.6.11/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@3.4.0/dist/vuex.js"></script>
문제는 구성에 루트가 포함되어 있다는 것입니다.state
물건.첫 번째 스토어는foo
모듈로 이동합니다.두 번째 저장소에서 동일한 작업을 수행하려고 하면 속성이 이미 존재함을 발견하고 오류를 기록합니다.
루트가state
이 예시와 같이 오브젝트가 비어 있으면 삭제만 하면 됩니다.그러나 비어 있지 않은 경우 대신 함수로 변경하여 이 문제를 해결할 수 있습니다.
const config = {
state () {
return {
/* state properties here */
}
},
modules: {
foo: {}
}
}
이 동작은, E-메일과 같은 방법으로 동작합니다.data
컴포넌트의 기능.
언급URL : https://stackoverflow.com/questions/59052646/vuex-state-field-foo-was-overridden-by-a-module-with-the-same-name-at-foo
'programing' 카테고리의 다른 글
소품을 사용하여 v-model을 초기화하시겠습니까? (0) | 2022.08.17 |
---|---|
C 또는 C++ 표준에서는 char를 부호 있는 문자 또는 부호 없는 문자로 명시적으로 정의하지 않는 이유는 무엇입니까? (0) | 2022.08.17 |
vue 컴포넌트와 앱에서 el과 template의 차이점은 무엇입니까? (0) | 2022.08.16 |
Java에서 문자열의 첫 글자를 대문자로 표시하는 방법은 무엇입니까? (0) | 2022.08.16 |
C/C++ 글로벌과 스태틱 글로벌 (0) | 2022.08.16 |