我有这个代码:
signin(context, payload, resolve) {
console.log("SIGNIN action")
const aemail = payload.locmail
const apassw = payload.locpass
backend.get("api/auth/signin", {
headers: {
'planck': 'FRESH'
},
crossDomain: true,
params: {
password: apassw,
email: aemail
}
}).then(function(ret) {
console.log("SENT")
if (ret.data.auth === 'TRUE') {
context.commit('authenticate', ret.data.planck)
state.isAuthenticated = true
} else {
state.isAuthenticated = false
}
console.log(ret)
return Promise.resolve(ret)
});
}
当我从组件调用它时:
this.$store.dispatch('signin', {
locmail,
locpass
}).then(ret => {
console.log(ret);
});
然后控制台日志打印undefined
。我在这里做错了什么?在文档中,我读到我应该使用 resolve()
但随后我收到错误,它不是一个函数。
最佳答案
在signin
操作中返回backend
promise 。
signin(context, payload) {
// ...
// The action needs to return a Promise
return backend.get("api/auth/signin", {
/* ...*/
}).then(function(ret) {
/* ... */
});
}
此外,您似乎正在更改操作中的 state
对象,并且这应该仅限于突变。
如果您使用 strict mode在开发过程中,您会看到有关此的警告。
关于javascript - Vuex 调度不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710481/