Vuex - обновить объект в мутации - PullRequest
2 голосов
/ 17 февраля 2020

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

Этот метод вызывается после нажатия пользователем кнопки. (this.tableview - локальный объект с теми же значениями, что и у объекта vuex)

            updateVuexTableview() {
                // eslint-disable-next-line no-console
                console.log("Update Vuex Table view");
                this.updateTableview(this.tableview)
            }

В этом методе вызывается мое действие vuex. Что выглядит следующим образом: (updTableview - это новые данные, которые я хочу вставить)

async updateTableview({commit}, updTableview) {
        const response = await axios.put(
            `http://localhost:3000/tableview`,
            updTableview
        );

        // eslint-disable-next-line no-console
        console.log(response.data);

        commit('updateTableviewMut', response.data);
    },

Это вызываемая мутация. Вот где я застрял. Я попытался вытолкнуть данные и снова набрать их, но пока ничего не работает.

    updateTableviewMut: (state, updTableview) => {
        state.tableview.push(updTableview)
    },

Вот мое состояние:

const state = {
    tableview: {
        "thema_c": true,
        "status_c": true,
        "priority_c": true,
        "custom1_c": true,
        "custom2_c": true,
        "customFieldName1": "Custom1",
        "customFieldName2": "Custom2"
    },
};

1 Ответ

2 голосов
/ 17 февраля 2020

Вы не можете обновить объект с помощью .push, вам необходимо переназначить объект или установить указанное поле c. Просто измените свой код следующим образом: Если вы хотите добавить пару ключ-значение, вы можете сделать:

updateTableviewMut: (state, updTableview) => {
  state.tableview['keyname'] = updTableview
}

Или, если вы хотите переназначить объект, вы можете сделать:

updateTableviewMut: (state, updTableview) => {
  state.tableview = updTableview
}

...