将数据从组件发送到Vuex

时间:2019-04-14 14:18:22

标签: vuex dispatch payload

我有一个组件文件,其中使用dispatch发送ID:

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

我从路线(id)获得warehouseId的元素,接下来我执行动作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从componnt获取payload,但是这个值可能是undefined。当我改变时:

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

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

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

1 个答案:

答案 0 :(得分:0)

好,我找到了解决方法

我必须只添加payload.warehouseId

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

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

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