PUT http:// localhost:3000 / events / undefined 404(未找到)

时间:2020-05-13 22:51:42

标签: javascript api vuex

此代码通过获取其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(() => {});
    },
  }

1 个答案:

答案 0 :(得分:1)

您的操作unpacks/destructures idevent来自有效负载(第二个参数),但是您的调度未传递对象。相反,它传递的是this.id-大概是String,其中不包含名为idevent的属性(因此,id解析为“未定义”在您的网址中。)

要解决此问题,您的调度程序应传递具有预期属性的 object

//this.$store.dispatch("updateEvent", this.id, this.event); // DON'T DO THIS
this.$store.dispatch("updateEvent", { id: this.id, event: this.event })