Redux-saga множественная сага в саге root - PullRequest
0 голосов
/ 25 марта 2020

Вот мой код:

login.saga.ts

export function* authenticate(action: AuthenticateRequestAction) {
  ...
}

export function* logout(action: LogoutRequestAction) {
  try {
    yield LoginService.logout(action.data);
    yield put(AppActions.resetUser());
    yield put(loginActions.setAuthenticationSuccessRequest(false));
  } catch (err) {
    Notification({
      type: 'error',
      message: err.message,
      description: i18n.t('login.logoutFailed'),
    });
  }
}

export default function* loginSaga() {
  yield [
    takeLatest(ELoginActionTypes.AUTHENTICATE_REQUEST, authenticate),
    takeLatest(ELoginActionTypes.LOGOUT_REQUEST, logout),
  ];
}

rootSaga.ts

export default function* rootSaga() {
  yield all([appSaga(), loginSaga()]);
}

Мое приложение просто прослушивает первое вызванное действие, например LOGOUT_REQUEST , но не будет прослушивать другие действия после этого, даже действия, вызванные с помощью

yield put()

Так что, я думаю, мои настройки неверны, есть идеи?

1 Ответ

0 голосов
/ 25 марта 2020

Если вы не попробуете что-то вроде в этом примере из документа redux-saga?

export default function* loginSaga() {
  while (true) {
    const authAction = yield take(ELoginActionTypes.AUTHENTICATE_REQUEST);
    yield* authenticate(authAction);
    const logoutAction = yield take(ELoginActionTypes.LOGOUT_REQUEST),
    yield* logout(logoutAction);
  };
}
...