此代码通过获取其ID更新特定对象。当我将ID硬编码到API cal中时,没有错误,并且可以正常工作,但是当我将它从组件中获取的ID传递给新参数的'updateEvent'函数时,它将返回未定义的ID。 我认为问题出在我要传递的参数内的vuex代码内
axios API调用
updateEvent(id, event) {
return apiClient.put(`/events/${id}`, event)
}
以及在vuex操作中
updateEvent({
commit,
dispatch
}, {
id,
event
}) {
return EventService.updateEvent(id, event)
.then(() => {
commit('UPDATE_EVENT', event)
})
}
然后我像这样将其分派到组件内部
methods: {
updateEvent() {
this.$store
.dispatch("updateEvent", this.id, this.event)
.then(() => {
this.$router.push({
name: "EventShow",
params: { id: this.id },
});
})
.catch(() => {});
},
}
答案 0 :(得分:1)
您的操作unpacks/destructures id
和event
来自有效负载(第二个参数),但是您的调度未传递对象。相反,它传递的是this.id
-大概是String
,其中不包含名为id
或event
的属性(因此,id
解析为“未定义”在您的网址中。)
要解决此问题,您的调度程序应传递具有预期属性的 object :
//this.$store.dispatch("updateEvent", this.id, this.event); // DON'T DO THIS
this.$store.dispatch("updateEvent", { id: this.id, event: this.event })