首页 > 解决方案 > 将数据从组件发送到 Vuex

问题描述

我有一个组件文件,我在其中发送 id 使用dispatch

mounted() {
    const warehouseId = this.$route.params.id;
    this.$store.dispatch("showWarehouse", {warehouseId}).then(() => {
        this.warehouseData = this.$store.state.showWarehouses;
    });
},

id从 route () 中获取元素warehouseId,接下来我运行 action showWarehouse。在 store.js (Vuex) 文件中我有一个动作:

showWarehouse({ commit }, payload) {
    return new Promise((resolve, reject) => {
        axios.get('/api/warehouse/' + payload)
            .then(response => {
                commit('showWarehouse', response.data);
                resolve();
            })
            .catch(error => {
                console.warn(error);
            });
    });
}

我尝试id使用 来自组件payload,但可能这个值是undefined. 当我改变时:

axios.get('/api/warehouse/' + payload)

axios.get('/api/warehouse/1')

axios从数据库中正确返回数据。

标签: vuexdispatchpayload

解决方案


好的,我找到了解决方案

我必须添加payload.warehouseId

axios.get('/api/warehouse/' + payload.warehouseId)

warehouseId必须与组件的名称相同:

this.$store.dispatch("showWarehouse", {warehouseId})

推荐阅读