PUT http:/localhost:3000eventsundefined 404 (Not Found)

问题描述 投票:0回答:1

这段代码通过获取一个特定对象的id来更新它。当我把id硬编码到API cal中时,没有任何错误,而且工作得很好,但是当我把从组件中获取的id作为一个新的参数传递到'updateEvent'函数中时,它返回了未定义的id.我认为问题出在我传递的参数中的vuex代码中。

斧头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(() => {});
    },
  }
javascript api vue.js axios vuex
1个回答
1
投票

你的操作 unpacksdestructures idevent 的第2个参数),但你的调度并没有传递一个对象。相反,它传递的是 this.id -- 大概是一个 String的属性,其中不包含名为 idevent (因此。id 解析为 "undefined")。)

为了解决这个问题,您的调度应该通过一个叫做 对象 具有预期的特性。

//this.$store.dispatch("updateEvent", this.id, this.event); // DON'T DO THIS
this.$store.dispatch("updateEvent", { id: this.id, event: this.event })
© www.soinside.com 2019 - 2024. All rights reserved.