簡體   English   中英

Redux可觀察的史詩與Rxjs問題

[英]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傳遞observable才能使用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))))
        );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM