Laravel + Vuex: разрушение объекта / аргумента не работает

Я создаю приложение Vue с использованием Vuex, и я не могу заставить работать следующий код (отредактированный для краткости, вдохновленный этим сообщением в блоге).

// File: views/Board.vue

export default {
    methods: {
        updateProp (prop, value) {
            console.log(prop, value) // Outputs prop and value

            this.$store.commit('board/updateProp', {
                [prop]: value
            })
        }
    },

    // ...
}

И в моем (названном) модуле Vuex:

// File: vuex/modules/board.js

export default {
    mutations: {
        updateProp (state, { prop, value }) {
            console.log(prop, value) // Outputs 'undefined undefined'
        }
    },

    // ...
}

Так как import { something } from 'somewhere' работает нормально, я склонен верить объектам деструктурирования. Я просто сбит с толку, почему мой код не работает.

Я также создал .babelrc файл со следующим, и установлены соответствующие плагины и пресеты, но безрезультатно.

{
    "plugins": [
        "transform-es2015-destructuring",
        "transform-object-rest-spread"
    ],
    "presets": [
        ["es2015", { "modules": false }]
    ]
}

Помощь очень ценится.

1 ответ

Решение

Это, вероятно, не ответ, но слишком сложно вписать в комментарий. Я не уверен, почему оба prop а также value являются undefined, но это не так, как работает деструктуризация (она не распаковывает ключ и значение объекта). Текущая настройка будет работать, только если вы вызываете ее с объектом, который имеет prop ключ и value ключ:

this.$store.commit('board/updateProp', { prop, value })
Другие вопросы по тегам