美好的一天。我正在尝试使用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)
});
},
},
我到底在做什么错?
答案 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...
}