嘿伙计我有这样的功能:
function dispatchSignup(username, password) {
return function(dispatch) {
const newUser = {username: username, password: password}
axios.post('/signup', newUser).then(() => {
return dispatch(signupAction)
}).then(() => {
return dispatch(push('/'))
}).catch((error) => {console.log(error)})
}
}
此功能首先向我的服务器发送请求以进行注册。如果成功,'。then'运行并发送signupAction。然后在此之后调用另一个'.then',它应该仅在调度此signupAction之后运行,这将把用户重定向到'/'aka。我的主页。我遇到的问题是,是的,他们注册,并且推送的网址有效,但实际上并没有将组件呈现在'/'。这里发生了什么?这就好像他们互相阻挡,虽然我不太确定。我认为Redux-thunk是异步的,所以我调用的第二个动作将不会被分派,直到第一个动作成功发送。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
然后我打电话给另一个'然后'在此之后,这应该只在调度此signupAction之后运行
这个假设是不正确的。 dispatch
函数返回正在调度的操作,而不是nested object
。假设Promise
也在使用redux-thunk(返回一个动作),那么这就解释了为什么你的signupAction
调用立即发生而不等待你的注册过程完成。