使用 Saga 动作作为 if 语句的条件

Use an Saga action as condition for an if statement

我实际上正在尝试将 redux-saga 实现到我的应用程序中。为了在开始时保持简单,我尝试先将 saga 添加到我的登录组件中。

但是我正在努力添加一个 if 语句,如果我的登录操作 loginSuccess() 被调度,该语句将 UI 重定向到一个页面。我想像下面的注释语句那样实现 smth:

  const onSubmitForm = (e?: React.FormEvent<HTMLFormElement>) => {
    if (e) {
      e.preventDefault();
    }
    dispatch(actions.submitLogin());

    // if (actions.loginSuccess() && !actions.loginError) {
    //  history.push('/');
    // }
  };


动作是如何传递的:

   // After the API was fetched:
   if (response.message === 'login') {
      yield put(actions.loginSuccess());
    } else {
      yield put(actions.loginError('Username or password is incorrect'));
    }

您将在 reducer 中处理“loginSuccess”操作以更改您的状态,或者可能由另一个 saga 监听 loginSuccess 操作以在用户登录时执行各种其他操作。例如获取用户数据、重定向位置等