处理异步中的副作用(thunk' d)操作

时间:2015-10-06 16:05:13

标签: redux

我有一个异步actionCreator来处理我的应用程序的身份验证流程:

function createAuthenticationResponse(err, grant) {
  return {
    type: AUTHENTICATION_RESPONSE,
    payload: err || grant,
    error: Boolean(err)
  }
}

function authenticate() {

  // return a thunk.
  return dispatch => {

    // Notify the system that we are authenticating.
    dispatch({ type: AUTHENTICATE });

    // Trigger the auth flow.
    myAuthModule.authorize((err, grant) => {

      // Trigger a state-change on the outcome.
      dispatch(createAuthenticationResponse(err, grant));

      // Q: How do I handle this side-effect?
      if (!err) {
        dispatch(extractUserInfo(grant));
      }
    });
  };
}

我的actionCreator包含业务逻辑,用于从授权中提取用户信息,如果用户已成功通过身份验证;这个逻辑应该存在于我的动作创作者中吗?如果不是,我应该把它放在我的减速机内?

在其他架构中,我会绑定一个命令来触发AUTHENTICATION_RESPONSE;但这不是一种中间件工作吗?

1 个答案:

答案 0 :(得分:3)

我认为你提出的建议是完全合情合理的 您可以将Redux Thunk用于控制流和副作用 你不应该把副作用放到减速器中。