商店调度功能不接受我的参数

时间:2019-06-24 18:13:01

标签: javascript vue.js axios store

美好的一天。我正在尝试使用axios进行快速搜索功能,并且每当我尝试将任何参数传递给它时都会失败,但是当我对需要执行api调用的值进行硬编码时,它就可以正常工作。 / p>

这是我的组件方法和变量:

<script>
export default {
  data: () => ({
    value1: null,
    value2: null,
    value3: null,

  }),

  methods: {
    myMethod(){
      this.$store.dispatch('storeFunction', {functionValue1: this.value1, functionValue2: this.value2, functionValue3: this.value3})
    }
  },
};
</script>

这是我的商店调度功能,该功能不起作用,并给我一个错误500:

    storeFunction(functionValue1, functionValue2, functionValue3) {
      axios
        .post("/some/call", {        
          apiValue1: functionValue1,
          apiValue2: functionValue2,
          apiValue3: functionValue3
         }
           )
        .then(res => {
          console.log("call response", res)
        });
    },
  },

但是,如果我对这些值进行硬编码,则可以正常工作:

    storeFunction() {
      axios
        .post("/some/call", {        
          apiValue1: 'myValue1',
          apiValue2: 'myCalue2',
          apiValue3: 'myCalue3'
         }
           )
        .then(res => {
          console.log("call response", res)
        });
    },
  },

我到底在做什么错?

1 个答案:

答案 0 :(得分:0)

您正在分派具有单个对象作为参数的动作:

this.$store.dispatch('storeFunction', {functionValue1: this.value1, functionValue2: this.value2, functionValue3: this.value3})

但是您的函数接受三个单独的参数:

storeFunction(functionValue1, functionValue2, functionValue3)

解决方案应该只是破坏函数中的参数,就像这样:

storeFunction({functionValue1, functionValue2, functionValue3})

或者,如果您无法使用此功能,则可以通过ES5方法来实现:

storeFunction(values) {
  var functionValue1 = values.functionValue1
  var functionValue2 = values.functionValue2
  // etc...
}