[英]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.