programing

괄호 표기 + 변수를 사용하여 오브젝트에 속성을 할당할 수 없는 이유는 무엇입니까?

sourcejob 2022. 7. 21. 23:36
반응형

괄호 표기 + 변수를 사용하여 오브젝트에 속성을 할당할 수 없는 이유는 무엇입니까?

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

반응형