带有 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))))
);
我的史诗如下
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))))
);