ЕСЛИ в Redux наблюдаемая эпопея - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть эпос, который перехватывает каждую отправку получения статуса (просто элемент из состояния, например, state.process: {status: fail, success, inWork}, а не статус запроса, например 200, 500 и т. Д.). Когда статус == успех (путем получения статуса из состояния), мне нужно отправить другое действие, такое как SET_STATUS_SUCCESS

const getStatus = (action, state) =>
    action.pipe(
        ofType(GET_STATUS),
        withLatestFrom(state),
        mergeMap(([action, state]) => {
            const { status } = state.api.process; //here is what i need, there is no problem with status.
            if (status === "success") {
              return mapTo(SET_STATUS_SUCCESS) //got nothing and error.
}
        })
    );

Теперь я получаю сообщение об ошибке:

Uncaught TypeError: Вы предоставили 'function (source) {return source.lift (новый MapToOperator (значение)); } 'где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable. at subscribeTo (subscribeTo.js: 41)

Что мне делать? Я попытался просто вернуть действие setStatusSuccess, но оно тоже не работает.

1 Ответ

0 голосов
/ 19 ноября 2018

Вам необходимо вернуть наблюдаемое из функции, которую вы передаете, mergeMap. Попробуйте это:

const getStatus = (action, state) =>
  action.pipe(
    ofType(GET_STATUS),
    withLatestFrom(state),
    mergeMap(([action, state]) => {
      const { status } = state.api.process;

      if (status === 'success') {
        return of({ type: SET_STATUS_SUCCESS });
      } else {
        return EMPTY;
      }
    }),
  );

из и EMPTY импортируются из rxjs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...