Reactjs 当服务器发送错误状态时,代码停止工作

Reactjs 当服务器发送错误状态时,代码停止工作,reactjs,redux,rxjs,observable,redux-observable,Reactjs,Redux,Rxjs,Observable,Redux Observable,我不熟悉rxjs可观测系统。我正在尝试简单的登录页面应用程序。当我发送正确的凭据时,代码工作正常,加载微调器也会停止渲染。当凭据无效时,代码将停止工作,spinner也将保留在页面上。我必须重新加载页面才能使其再次工作。 代码如下: import constants from "../constants"; import "rxjs"; import { ajax } from "rxjs/observable/dom/ajax"; import { loginBody } from "../u

我不熟悉rxjs可观测系统。我正在尝试简单的登录页面应用程序。当我发送正确的凭据时,代码工作正常,加载微调器也会停止渲染。当凭据无效时,代码将停止工作,spinner也将保留在页面上。我必须重新加载页面才能使其再次工作。 代码如下:

import constants from "../constants";
import "rxjs";
import { ajax } from "rxjs/observable/dom/ajax";
import { loginBody } from "../utils/bodyCreator";
import {
  showLoadingSpinner,
  hideLoadingSpinner
} from "../actions/LoadingOverlayActions";

const sessionCreated = payload => ({
  type: constants.sessionCreated,
  response: payload
});

export const tryLoginEpic = (action$, store) =>
  action$
    .ofType(constants.tryLogin)
    .map(() => store.dispatch(showLoadingSpinner()))
    .mergeMap(action =>
      ajax
        .post(constants.loginEndPoint, loginBody(store.getState()), {
          "Content-Type": "application/json"
        })
        .map(data => store.dispatch(sessionCreated(data.response)))
        .map(() => store.dispatch(hideLoadingSpinner()))
        .catch(err => store.dispatch(hideLoadingSpinner()))
    );
请帮助我如何做到这一点,这是错误的代码


谢谢

您需要以不同的方式使用
.catch
操作符。例如,返回空的Observable(或其他操作),类似于:

.catch(错误=>{
dispatch(hideLoadingSpinner());
return-Observable.empty();
})
见有关的正式文件