Как я могу изменить значение объекта Vuex store с помощью действий? (vue. js) - PullRequest
0 голосов
/ 13 февраля 2020

Я храню данные в виде массива и хочу изменить значение объекта. Как я могу изменить значение id 1 на true с действиями vuex?

состояние. js

const array=[]

мутации. js

storeArray(state, data) {
    state.array = data;
  }

действия. js

async changeValue({ state, dispatch, commit }, id) {
    const item = await state.array[id].value;

    await commit('storeArray', { value: true });

  },

массив выглядит как

[{
    id: "1",
    value: 'false'
}, {
    id: "2",
    value: 'true'
}]

1 Ответ

0 голосов
/ 13 февраля 2020

Необходимо заранее знать идентификатор, а также значение нового массива. Чтобы найти и изменить нужный объект в массиве состояний, вы можете использовать мутацию в приведенном ниже примере:

const store = new Vuex.Store({
  state: {
    objects: [{ id: 1, value: true }, { id: 2, value: true }]    
  },
  mutations: {
    changeObjectValue (state, { id, value }) {
        const found = state.objects.find(item => item.id === id);
        found.value = value;               
    },
  },
});

Таким образом, вы можете зафиксировать внутри одного действия, например:

store.commit('changeObjectValue', {id: 2, value: false});

Проверьте этот пример на plnkr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...