使用redux-thunk进行Redux重定向

时间:2017-09-04 06:29:15

标签: redux redux-thunk

嘿伙计我有这样的功能:

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是异步的,所以我调用的第二个动作将不会被分派,直到第一个动作成功发送。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

  

然后我打电话给另一个'然后'在此之后,这应该只在调度此signupAction之后运行

这个假设是不正确的。 dispatch函数返回正在调度的操作,而不是nested object。假设Promise也在使用redux-thunk(返回一个动作),那么这就解释了为什么你的signupAction调用立即发生而不等待你的注册过程完成。