带有 Rxjs 问题的 Redux 可观察史诗

Redux observable epic with Rxjs issue

我的史诗如下

export const fetchSomethingEpic = (action$, state$) => {
  return action$.pipe(ofType(someActions.FETCH_LEADS),
    mergeMap(action =>
      from(api().get('SOMETHING'))
        .map(response => fetchSomethingSuccess(response.data))
        .catch(error => Observable.of(fetchSomethingError(error))))
  );
}

api 这里是 axios.create 发生在不同的文件中

基本上,当我安装了 rxjs-compat 时,它工作得很好。但试图删除它,现在给我以下错误

TypeError: Object(...)(...).map is not a function

安装 rxjs-compat 后,可以正常工作

我有

import { Observable } from 'rxjs/Rx';
import { mergeMap } from 'rxjs/operators';

  "rxjs": "6.2.1",
  "rxjs-compat":"6.2.1"

现在我有

  import { Observable } from 'rxjs'
  import { mergeMap, map} from 'rxjs/operators';

 "rxjs": "^6.5.2"

我是不是遗漏了什么

您必须使用 pipe 传递可观察对象才能使用 map 运算符。同时导入 catchError 来处理错误。

export const fetchSomethingEpic = (action$, state$) => {
  return action$.pipe(ofType(someActions.FETCH_LEADS),
    mergeMap(action =>
      from(api().get('SOMETHING'))
        .pipe(map(response => fetchSomethingSuccess(response.data)),
        catchError(error => Observable.of(fetchSomethingError(error))))
  );
}

解决如下

  export const fetchSomethingEpic = (action$) =>
      action$.ofType(someActions.FETCH_LEADS)
        .pipe(mergeMap((action) => from(api().get('SOMETHING'))
          .pipe(map(response => fetchSomethingSuccess(response.data)),
            catchError(error => fetchSomethingError(error))))
        );