반응형
괄호 표기 + 변수를 사용하여 오브젝트에 속성을 할당할 수 없는 이유는 무엇입니까?
Vuex는 처음이라 Vuex 상태에 값을 할당하려고 합니다.state.map.status.isReady(이것에는)
다만, 코드를 재사용할 수 있도록 하고 싶기 때문에 기능을 만들었습니다.changeMapStatus(state, key, value)그렇게 하기 위해서요.
이 함수는 속성을 수정합니다.state.map.status.key로.value수신했습니다.
하지만 제가 변이를 호출했을 때this.$store.commit('changeMapStatus', 'isReady', true)컴포넌트 파일로부터, 간단하게 삭제해 주세요.state.map.status.isReady그리고 그 성질은undefined.
한편, 기능을 로 바꾸면
changeMapStatus(state, value) {
state.map.status.isReady = value;
}
어떻게든 되는군
어느 부분에서 틀렸는지 도와주실 수 있나요?
정말 고마워요!
store.js(Vuex)
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
map: {
status: {
isReady: false,
},
},
},
mutations: {
changeMapStatus(state, key, value) {
state.map.status[key] = value;
}
},
});
에 따르면Vuex 공식 문서 변환에는 2개의 파라미터 상태와 payload가 사용됩니다.확산 연산자를 사용하여 payload에서 값을 가져올 수 있습니다.
changeMapStatus(state, {key, value}) {
state.map.status[key] = value;
}
this.$store.commit('changeMapStatus', {key: 'isReady', value: true})
아니면 이렇게 쓰셔도 됩니다.
changeMapStatus(state, payload) {
state.map.status = {
...state.map.status,
...payload,
}
}
this.$store.commit('changeMapStatus', { isReady: true });
개체를 다음 매개 변수로 전달할 수 있습니다.key그리고.value다음과 같습니다.
changeMapStatus(state, myObj) {
state.map.status[myObj.key] = myObj.value;
}
이렇게 불러주세요.
this.$store.commit('changeMapStatus', {key:'isReady', value:true})
언급URL : https://stackoverflow.com/questions/53931227/why-cant-i-assign-a-property-to-an-object-using-bracket-notation-a-variable
반응형
'programing' 카테고리의 다른 글
| 글로벌 도우미 js 함수를 저장할 위치 (0) | 2022.07.21 |
|---|---|
| 범용 타입 파라미터를 문서화하기 위한 javadoc 태그가 있습니까? (0) | 2022.07.21 |
| vuejs 앱에서 실행할 때 Axios 응답 헤더에 데이터가 누락됨 (0) | 2022.07.21 |
| 사용자 로그 vue.js의 이름을 유지하려면 어떻게 해야 합니까? (0) | 2022.07.21 |
| 특정 Array List 항목을 가져옵니다. (0) | 2022.07.21 |