Redux、动作、授权

Redux, actions, authorization

我目前正在使用 reduxredux-thunk 中间件。

关于动作调度的控制,例如:

我相信将此类控件放在异步操作 (thunk) 中是可行的方法,因为:

问题

  1. 我正在寻找其他 redux 用户的反馈。我还算 对这个决定充满信心,但几乎没有反馈(并且正在 junior dev) 让我怀疑。这是正确的方法吗 授权控制使用redux时?

  2. 授权控制器改成怎么样 中间件。它会将 auth 控件保存在一个地方,而不是在每个 actionCreator 中复制它。
    编辑 当深入研究这种可能性时,它很快变得具有挑战性,因为中间件最初只接收 (dispatch, getState),这意味着授权中间件需要 "know" 正在调度哪个动作(或正在使用哪个 actionCreator ), 需要一个 hacky-ish 设置并最终证明不可靠的东西。

其他点数

我认为您可以进行设置。 Thunk 是编排程序流的好方法。还有其他中间件,如 redux-saga,它更复杂一些,但据我了解你想做这样的事情(伪代码)?

function authorizeAndTriggerAction(forUser) {
  return function (dispatch) {
    return authorizeUser().then(
      action => dispatch(concreteAction(forUser)),
      error => dispatch(notAuthorized(forPerson, error))
    );
  };
}

这可以用 thunk 来完成。