我有一个异步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
;但这不是一种中间件工作吗?
答案 0 :(得分:3)
我认为你提出的建议是完全合情合理的 您可以将Redux Thunk用于控制流和副作用 你不应该把副作用放到减速器中。